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 pre on line 1Call Stack: 0.0001 319080 1. {main}() Command line pre:0 0.0001 319200 2. printf() Command line pre:10.00000000100000000000000006228159145777985641889706869如该示例所示,不仅有一个公共值(6位数字),而且还有一个最大值(可能取决于PHP所执行的计算机系统),在本例中,如警告所示,这里被截断为53位数字。
由于您的问题,我想说您要显示:
0.000000001
这是九位数字,因此您需要这样写:
sprintf('%.9F',$ret)但是,您可能要这样做:
rtrim(sprintf('%.20F', $ret), '0');它将从右边删除零:
0.000000001
希望这会有所帮助。



