我在获取PHP中的确切值方面遇到了麻烦。
我有这些价值观:
$a = 22900000.002827;
$b = 0.022900;
$c = $a/$b;
我希望得到1000000000.12345
的结果,但它只返回1000000000.1234
我的问题是,有没有办法在PHP中绕过这个限制?
答案 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
答案 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