Я делаю простое добавление/подстановку в PHP и возвращает неверный результат. В моей системе (PHP 5.3) это воспроизводимо:Добавление десятичного числа PHP приводит к странному результату
$number = 34706;
$number2 = $number/100;
// returns: number2: 347.06
print "number2: $number2<br>";
$number3 = -347;
$result = $number2 + $number3;
// returns: "Result: 0.060000000000002
print "Result: $result";
Я искал уже интернет. Является ли это представлением общей арифметической ошибки с плавающей запятой, описанной здесь ?: http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
Я знаю, как справиться с этим, поскольку я рассчитываю деньги, я могу использовать round() для каждого вычисления, чтобы вернуть только два десятичных знака значения.
Но все же я удивляюсь, почему я должен иметь дело с этим, и он не рассматривается на уровне языка программирования или выше. Нет никакого способа, приведенный выше результат может когда-либо быть полезным кому-то.
yep ... с плавающей запятой округление! а не самой php, но универсальной с цифровыми компьютерами. Чем больше бит процессор, тем больше нулей вы получите в .060000000000000000002', но вы получите последнюю цифру почти каждый раз. – YvesLeBorg