您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

sprintf 可以,但是您在这里错过了一点。

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

您可能希望使用更多数字,例如说4000000(400万):

$ 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

希望这会有所帮助。

其他 2022/1/1 18:13:39 有640人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶