当我将新的totalSubs列表添加到运行总计时,PHP会返回一个奇怪的值。 我已经生成了以下输出(见第40行):
1 The total currently '0' (integer) + new TotalSub '-26969.55' type(double) = total '-26969.55'
2 The total currently '-26969.55' (double) + new TotalSub '249.6' type(double) = total '-26730.05'
...
39 The total currently '-164.89' (double) + new TotalSub '61.95' type(double) = total '-112.94'
40 The total currently '-102.94' (double) + new TotalSub '98.71' type(double) = total '-5.3300000000009'
41 The total currently '-5.3300000000009' (double) + new TotalSub '50' type(double) = total '45.769999999999'
PHP生成是:
echo ($count++) . " The total currently '$totalTrans' (".gettype($totalTrans).") + new TotalSub '$totalVar' type(".gettype($totalVar).") = total '" . ($totalTrans + $totalVar) ."'<br />";
如何修复00000000009?
答案 0 :(得分:1)
从我所看到的。
尝试将输入数据乘以100,然后将总数除以100。
多次扫描1或10很可能无法纠正它可能是由于2位小数而使用100这些值现在是整数(整数)
请记住,浮点数据类型(例如 DOUBLE )不代表确切数字并且是近似值。
您可以在将来使用bcmath()
进行数学计算,因为使用number_format
()与使用round
()没有区别,而不将其作为字符串返回。
http://php.net/manual/en/book.bc.php
答案 1 :(得分:1)
使用printf
解决该问题并同时显示您的代码:
printf("%d The total currently '%.2f' (%s) + new TotalSub '%.2f' (%s) = total (%.2f)<br />",
$count++,
$totalTrans,
gettype($totalTrans),
$totalVal,
gettype($totalVar),
$totalTrans + $totalVar);