PHP round ($ num, 2) и javascript toFixed (2) не дают правильного вывода для этого значения 53.955

У меня есть одна функция php и

phpans = round(53.955,2)

и функция javascript

 var num = 53.955; var jsans = num.toFixed(2); console.log(jsans); 

как jsans, так и phpans дают разные $ phpans = 53.96 ans jsans = 53.95 . Я не могу понять, почему это происходит. Спасибо, это Advance

Поскольку компьютеры не могут правильно представлять плавающие числа. Вероятно, это 53.95400000000009 или что-то в этом роде. Способ справиться с этим умножается на 100, округлять, а затем делить на 100, так что компьютер имеет дело только с целыми числами.

 var start = 53.955, res1, res2; res1 = start.toFixed(2); res2 = (start * 100).toFixed(0) / 100; console.log(res1, res2); 

JAvascript toFixed: метод toFixed () преобразует число в строку, сохраняя указанное число десятичных знаков.

php round: Возвращает округленное значение val до указанной точности (количество цифр после десятичной точки). точность также может быть отрицательной или нулевой (по умолчанию).

Заключение tofixed не работает, как php round. precision Указывает количество десятичных цифр, которые нужно округлить до.

Функция Javascript:

 function round_up (val, precision) { power = Math.pow (10, precision); poweredVal = Math.ceil (val * power); result = poweredVal / power; return result; }