Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Округление не в мою пользу, Округление чисел в JavaScript 
:(
    Опции темы
andryus
Дата 19.12.2011, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 17.1.2011

Репутация: нет
Всего: 0



Есть исходная задача:
Стоимость за успешное выполнение задания = 0.50
Пополненный баланс задания = 0.75
Вопрос: сколько заданий при оплате за 1 задание в сумме 0.50 выйдет количество заданий для выполнения.
По логике 0.75/0.50=1.5 - количество заданий, но как можно определить 0.50 задания (т.е. не бывает же выполнение половины задания), поэтому проще сделать количество заданий 1, а остаток от баланса 0.75-0.50=0.25 убрать (ну или вернуть), так как на такую сумму при такой стоимости выполнения заданий эта сумма ни к чему. Вот сделал код:
Код

script language='JavaScript'>
    
  function calcul_cost() {
  var taskbalance =  0.75;
  var taskcost = 0.50;
  var numb = Math.round(taskbalance/taskcost*100,0)/100;
   
  document.getElementById('numb').innerHTML=numb.toFixed(0);
  }
  calcul_cost();

  </script>


Вообщем мне выдает значение переменной numb упорно 2, а мне нужно 1, пробовал заменить round на ceil и floor, результат тот же. Помогите правильно составить код. Все спасибо
PM MAIL   Вверх
skyboy
Дата 19.12.2011, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



Math.floor(0.75 / 0.5) => 1
Math.ceil(0.75 / 0.5) => 2
PM MAIL   Вверх
andryus
Дата 19.12.2011, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 17.1.2011

Репутация: нет
Всего: 0



Цитата(skyboy @ 19.12.2011,  19:33)
Math.floor(0.75 / 0.5) => 1
Math.ceil(0.75 / 0.5) => 2

Изменил на round на floor. Код стал:
Код

<script language='JavaScript'>
    
  function calcul_cost() {
  var taskbalance =  0.75;
  var taskcost = 0.50;
  var numb = Math.floor(taskbalance/taskcost*100,0)/100;
   
  document.getElementById('numb').innerHTML=numb.toFixed(0);
  }
  calcul_cost();
  </script>


Результат все равно дает 2
PM MAIL   Вверх
ksnk
Дата 19.12.2011, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата
var numb = Math.floor(taskbalance/taskcost*100,0)/100,0);

Может, так?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
andryus
Дата 19.12.2011, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 17.1.2011

Репутация: нет
Всего: 0



Цитата(ksnk @ 19.12.2011,  20:36)
Цитата
var numb = Math.floor(taskbalance/taskcost*100,0)/100,0);

Может, так?

Да действительно помогла, а значение 2, оказывается мне выдавала функция в коде toFixed, а поскольку floor не срабатывало из-за ошибки в коде, вот мне и toFixed значение 2 давало. Сейчас все нормально. Всем спасибо
PM MAIL   Вверх
andryus
Дата 20.12.2011, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 17.1.2011

Репутация: нет
Всего: 0



Все равно не так работает, теперь ставлю значения: askbalance =  0.15, taskcost = 0.05. Вот код, который в настоящий момент
Код

<script language='JavaScript'>
    
  function calcul_cost() {
  var taskbalance =  0.15;
  var taskcost = 0.05;
  var numb = Math.floor(taskbalance/taskcost*100/100,0);
   
  document.getElementById('numb').innerHTML=numb.toFixed(0);
  }
  calcul_cost();

  </script>


В данном случае получается 2, хотя должно быть 3, арифметика 0.15/0.05=3
PM MAIL   Вверх
ksnk
Дата 20.12.2011, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Код

  var VeryLittleNumber=0.00000001;

  var numb = Math.floor(taskbalance/taskcost+VeryLittleNumber,0); // 100/100 ===1  :crazy 
   



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0908 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.