如何解决四舍五入后,PHP仍表示错误的精度
在尝试免税时(MySQL 5.7数据库结果DECIMAL(10,2)
在PHP 7.2.33上通过CakePHP表示为强),我执行以下操作:
$shipping_total = $order['Order']['shipping_cost'];
$shipping_tax = $shipping_total/11;
$shipping_price = $shipping_total - $shipping_tax;
其中,$order['Order']['shipping_cost']
= '12.00'
,然后将结果添加到数组:
$data['Lines'][] = [
'Quantity' => 1,'Price' => round($shipping_price,2),'Tax' => round($shipping_tax,'Total' => round($shipping_total,2)
];
但是,当使用json_encode
输出数组(不对这些行进行任何进一步的处理)时,它会输出以下内容:
"Lines": [
{
"Quantity": 1,"Price": 10.910000000000000142108547152020037174224853515625,"Tax": 1.0900000000000000799360577730112709105014801025390625,"Total": 12
},
...这导致API拒绝输入,因为看一下它! ?
我知道浮点数周围很奇怪,但是我正在尝试找到一个可行的解决方案来不实现这一目标,因此我可以继续进行此API集成。我可以看到该数字仍然必须存储为float(),并且长十进制可能是由/11
触发的,这导致了奇怪的输出,但仍然找不到获取输出的方法。想要(无需将它们转换为字符串然后返回,即重新启动)...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。