我正在尝试解决这个问题:
当我购买物品时,我会收到一张收据,上面列出了所有物品的名称 项目及其价格(含税),以总额结束 物品的成本,以及支付的销售税总额。该 销售税的四舍五入规则是税率为n%的货架 p的价格包含(np / 100四舍五入到最接近的0.05)金额 销售税。
所以,......我在php中有价格:
$value = 11.25;
我不明白为什么
var_export(ceil($value * 0.05 * 10));
返回6并除以10,结果为
var_export(ceil($value * 0.05 * 10) / 10);
0.59999999999999998
一些不错的实验:
php > echo bcmul(11.25, 0.05, 3);
0.562
php > echo bcmul(ceil(11.25), 0.05, 3);
0.60
答案 0 :(得分:2)
你可以阅读主教指出的内容,也可以阅读this以了解问题所在。
现在谈论一个解决方案,你可以使用PHP BCMath扩展名,当你想使用精确的数学数字时应该使用它
对于任意精度数学,PHP提供二进制计算器 它支持任何大小和精度的数字,表示为 字符串。
一个解决方案(一个丑陋的解决方案)可能就是这个
FileInfo[] FileCheck = default(FileInfo[]);
if (chbSubFolder.Checked == false)
FileCheck = Dir.GetFiles(string.Format("*.{0}", extention));
else
FileCheck = Dir.GetFiles(string.Format("*.{0}", extention), SearchOption.AllDirectories);
我在这里使用上述扩展程序中的 bcdiv 。