鉴于浮点不精确并且我应该使用BCMath函数来获得精确结果,是否真的有必要在PHP中使用价格字符串并在制作"简单"购物车时将其与bcadd相加?
鉴于以下示例,为什么我不应该使用圆形浮点数?
我正在寻找计算购物车订单总额的最佳做法.
$floatTotal = 0.00;
$stringTotal = '0.00';
for($i=0; $i<1000; $i++) {
$floatTotal += 0.1;
}
echo "float value: ";
printf('%.40f', $floatTotal); //99.9999999999985931253831950016319751739502
echo "<br>\n";
echo "rounded float value: ". round($floatTotal); //100
echo "<br>\n";
for($i=0; $i<1000; $i++) {
$stringTotal = bcadd($stringTotal, '0.1', 2);
}
echo 'string value: '.$stringTotal.'<br>'; //100.00
Run Code Online (Sandbox Code Playgroud)
您永远不应该使用货币的浮点值.它们不准确.相反,以最小单位(美分,便士等)存储货币值,以便您可以使用整数.在这种情况下,没有理由使用bcmath库,除非你处理的是非常不可能的巨大值.
| 归档时间: |
|
| 查看次数: |
2204 次 |
| 最近记录: |