gpt4 book ai didi

php的数字精度如何扩展它

转载 作者:行者123 更新时间:2023-11-29 22:24:07 25 4
gpt4 key购买 nike

在 JavaScript 中,这个数学运算返回:

1913397 / 13.054 =  146575.53240386088 

但在 php 中相同的操作返回:

1913397 / 13.054 =  146575.53240386

我想这是由于四舍五入造成的。

如何提高 php 的精度?

最佳答案

来自 an article I wrote for Authorize.Net :

一加一等于二,对吧? .2 加 1.4 乘以 10 怎么样?那等于 16,对吧?如果您使用 PHP(或大多数其他编程语言)进行数学运算,则不会:

echo floor((0.2 + 1.4) * 10); // Should be 16. But it's 15!

这是由于 float 在内部的处理方式。它们以固定的小数位数表示,可能导致数字相加与您预期的不尽相同。在内部,我们的 .2 加 1.4 乘以 10 的示例计算为大约 15.9999999998 左右。当处理不必像百分比那样精确的数字时,这种数学很好。但是,在处理金钱问题时,精确度很重要,因为这里或那里少了一分钱或一美元,加起来很快,没有人喜欢在任何丢失的钱上做空。

BC 数学解决方案

幸好 PHP 提供了 BC Math extension这是“对于任意精度的数学,PHP 提供了二进制计算器,它支持任何大小和精度的数字,以字符串表示。”换句话说,您可以使用此扩展程序对货币值(value)进行精确计算。 BC Math extension contains function允许您精确执行最常见的操作,包括 addition , subtraction , multiplication , 和 division .

一个更好的例子

这是与上面相同的示例,但使用 bcadd() 函数为我们进行数学运算。它需要三个参数。前两个是我们希望添加的值,第三个是我们希望精确到的小数位数。由于我们处理的是货币,因此我们将精度设置为小数点后两位。

echo floor(bcadd('0.2', '1.4', 2) * 10); // It's 16 like we would expect it to be.

关于php的数字精度如何扩展它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10622580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com