gpt4 book ai didi

php - 显示不带科学计数法的浮点值

转载 作者:IT王子 更新时间:2023-10-28 23:57:58 25 4
gpt4 key购买 nike

当我在 PHP 中进行以下乘法时:

$ret = 1.0 * 0.000000001;

我得到结果:1.0E-9

我想把这个结果转换成普通的十进制,我该怎么做?

sprintf('%f',$ret) 不起作用,它返回 0.000000。溢出?

最佳答案

sprintf('%f',$ret) doesn't work, it returns 0.000000. Overflow?

sprintf有效,但是您在这里错过了一些要点。

0.000000 没有溢出。只是 %f 修饰符的 sprintf 默认使用 6 位数字。另外请注意 %f 是区域设置感知的,%F 可能更适合。

您可能想使用更多数字,例如比方说 4 000 000(四百万):

$ php -r "printf('%.4000000F', 1*0.000000001);"

Notice: printf(): Requested precision of 4000000 digits was truncated to PHP maximum of 53 digits in Command line code on line 1

Call Stack:
0.0001 319080 1. {main}() Command line code:0
0.0001 319200 2. printf() Command line code:1

0.00000000100000000000000006228159145777985641889706869

如本例所示,不仅有一个通用值(6 位数字),还有一个最大值(可能取决于 PHP 执行的计算机系统),在我的例子中被截断为 53 位数字,如警告所示。

因为你的问题,我会说你想显示:

0.000000001

这是九位数字,所以你需要这样写:

sprintf('%.9F',$ret)

但是,您可能想这样做:

rtrim(sprintf('%.20F', $ret), '0');

之后将从右侧删除零:

0.000000001

希望对您有所帮助。

关于php - 显示不带科学计数法的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10916675/

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