【发布时间】:2013-01-31 02:34:44
【问题描述】:
感谢堆栈,我了解了浮点不精度,所以我转到了 bc 函数。
这在“普通”浮点数上效果很好,但对于非常小的浮点数,比如10^-10 类型,bcadd 总是给出0。
谁能告诉我我做错了什么才能使这些小浮点数精确地相加?
提前非常感谢!
PHP
$numerator = 1;
$denominator = 1000000000;
$quotientOne = $numerator / $denominator;
$numerator = 1;
$denominator = 1000000000000000;
$quotientTwo = $numerator / $denominator;
$smallSum = bcadd($quotientOne, $quotientTwo, 100);
echo $quotientOne . "<br>";
echo $quotientTwo . "<br>";
echo $smallSum . "<br>";
给予
1.0E-9
1.0E-15
0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
【问题讨论】:
-
请编辑您的问题,并包含一些代码。另外,您是使用 bcpow() 来获取那些小浮点数,还是使用浮点求幂?还是别的什么?
-
@Dagon:php 的 bc*() 函数不是浮点函数。它们是对任意精度数进行运算的函数。
标签: php floating-point-precision bc