如何从bcdiv函数获得浮点部分的实数位数输出?

时间:2015-10-25 09:00:16

标签: php floating-point divide bcmath

问题是我不知道输出中浮点部分的位数。我不能指定4例如......浮点数可能有100位,例如n 。我该如何解决?

 bcdiv('50','3',4); //16.6666
 bcdiv('50','3'); // correct output => 16.66666666666667

非常感谢你......

2 个答案:

答案 0 :(得分:0)

在浮点数学中,你没有精确的精确度。它的精度有限,因为计算机使用二进制系统而不是我们人类习惯的十进制系统。因此,当您和我很容易看到10 / 1 完全 0.1时,计算机会将其视为0.1000000000000000055511151231257827021181583404541015625。这就是为什么我们只选择一些有限的精度,我们觉得这些精度已足够,并且忽略了那里的所有其他东西。

有关详细信息,请参阅this answer to: Is floating point math broken?

答案 1 :(得分:0)

代码是:

# Suppose the value is 125.987654321012354.
$num = 1250.987654321012354;
echo $num;
$num_array = explode(".", $num);

# Floating point count.
$fCountDigit = strlen(@$num_array[1]); # Use the @ sign if there is no floating point. When the value is integer 123351
$intNumber = $num_array[0];

问题是:float具有4字节的特定字节限制。所以请记住这一点。

例如:

# Suppose the value is 1250000000000.987654321012354.
$num = 1250000000000.987654321012354;
echo $num;

Output: 1250000000001 # no floating point.