小数点后 16 位的数字管理

number management with 16 decimals

提问人:Goffredo psw 提问时间:10/20/2022 最后编辑:Goffredo psw 更新时间:10/20/2022 访问量:47

问:

我需要在项目中使用小数点后 16 位的数字并用它们进行数学运算,但我在处理它们时遇到了问题。

无论它在 php 中做什么,如果它们太长,它们就会被截断。 例如:

$value = 123456789.1234567890;

用“echo”打印它,我在屏幕上得到的结果是这样的:123456789.12346

即使数字的整数部分元素很少,小数部分也会被截断

$value = 0.12345678901234567890;

在输出中,我有:

0.12345678901235

我能做些什么来轻松管理它们?

感谢您的帮助。

我尝试使用 GuidoFaecke 建议的说明:

ini_set('precision', '16')

艺术

ini_set('precision', '-1');

但是当我使用 -1 时,我看不到十进制数。使用 16 我看不到显示数字的变化。

php 数字 十进制 浮点精度

评论

0赞 Guido Faecke 10/20/2022
你可以试试或ini_set('precision', '16');ini_set('precision', '-1');
0赞 Goffredo psw 10/20/2022
@GuidoFaecke我尝试过这个指示。但在我的情况下,它似乎不起作用。
0赞 nice_dev 10/20/2022
这回答了你的问题吗?我可以依靠 PHP php.ini 精度解决浮点问题吗
0赞 Eric Postpischil 10/20/2022
常用的浮点格式 IEEE-754 binary64 没有足够的精度来唯一区分其范围内的所有 16 位十进制数字。您可以使用 64 位整数算术,并将结果转换为十进制形式,仅用于显示。
0赞 Sammitch 10/20/2022
1. 使用 BCmath。2.你不可能需要那么多数字。

答: 暂无答案