У меня возникает следующая проблема с расчетами процентов и округлением результатов.Проблема округления в Javascript
Если я использую Math.ceil
:
var total = 66666;
var test1 = Math.ceil(60/100 * total);
var test2 = Math.ceil(23.5/100 * total);
var test3 = Math.ceil(14/100 * total);
var test4 = Math.ceil(2.5/100 * total);
Тогда test1 + test2 + test3 + test4 = 66664
Если я использую ParseInt
:
var total = 66666;
var test1 = parseInt(60/100 * total);
var test2 = parseInt(23.5/100 * total);
var test3 = parseInt(14/100 * total);
var test4 = parseInt(2.5/100 * total);
Тогда test1 + test2 + test3 + test4 = 66668
Я пытаюсь переписать мой скрипт Python в Javascript и я n Python У меня не было таких проблем.
Это противоположность: 'Math.ceil' округление вверх, так что вы получите' 66668'. 'parseInt' преобразует в строку и снова анализирует деталь перед точкой до числа, так что, например,' Math.trunc' (но медленнее) вы получаете '66664'. – Oriol
Я не понимаю вопроса. Если вы округлите свои номера, у них будет некоторая ошибка. Когда вы суммируете эти числа, ошибки могут отменять друг друга или складываться. Если вам это не нравится, не раунд. – Oriol
Действительно. Вы сравниваете яблоки и апельсины - 'parseInt' vs' Math.floor' будет лучшим сравнением. Вот [разница в производительности] (http://jsperf.com/math-floor-vs-math-round-vs-parseint/55) –