问题是我不知道输出中浮点部分的位数。例如,我不能分配 4 。浮点中可能有 100 位,例如 n。我该如何解决?
bcdiv('50','3',4); //16.6666
bcdiv('50','3'); // correct output => 16.66666666666667
太感谢了...
问题是我不知道输出中浮点部分的位数。例如,我不能分配 4 。浮点中可能有 100 位,例如 n。我该如何解决?
bcdiv('50','3',4); //16.6666
bcdiv('50','3'); // correct output => 16.66666666666667
太感谢了...
在浮点数学中,您没有精确的精度。它的精度有限,因为计算机使用二进制系统而不是我们人类习惯的十进制系统。因此,虽然您和我可以很容易地看到它10 / 1
确实是这样 0.1
,但计算机却将其视为0.1000000000000000055511151231257827021181583404541015625
。这就是为什么我们只选择一些我们认为足够的有限精度,并在最后忽略所有其他内容。
请参阅以下答案:浮点数学是否损坏?更多细节。
代码是:
# 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.