PHP精度限制

时间:2014-08-11 11:12:54

标签: php

我在获取PHP中的确切值方面遇到了麻烦。

我有这些价值观:

$a = 22900000.002827;
$b = 0.022900;

$c = $a/$b;

我希望得到1000000000.12345的结果,但它只返回1000000000.1234

我的问题是,有没有办法在PHP中绕过这个限制?

2 个答案:

答案 0 :(得分:1)

您可以使用bcdiv并在decimal之后提供您想要的数字

<?php 
 $a = 22900000.002827; 
 $b = 0.022900; 

 $c = $a/$b; 
 echo " c=".$c; 

 $d = bcdiv("$a", "$b", 5); 
 echo " d=".$d; 
?>

输出:

c=1000000000.1234 
d=1000000000.12344

Demo

答案 1 :(得分:1)

PHP的浮点数are platform-dependent,但是如果使用正确的格式打印并且在64位构建上,您应该能够获得所需的结果:

printf("%.5f", 22900000.002827 / 0.022900); 
// on my system, prints: 1000000000.12345

如果您想打印&#34;最多5&#34;小数位,但没有拖尾零,它们不需要你可以使用g格式类型:

printf("%.5f", 1/2); 
// prints: 0.50000 - this is pretty ugly

printf("%.5g", 1/2); 
// prints: 0.5

printf("%.5g", 22900000.002827 / 0.022900); 
// prints: 1.0e+9 unfortunately

print rtrim(sprintf("%.5f", 22900000.002827 / 0.022900), "0");
print rtrim(sprintf("%.5f", 1/2), "0");
// prints: 1000000000.12345 and 0.5