0

当我计算时,log(8) / log(2)我得到3了预期:

?log(8)/log(2)
3 

但是,如果我像这样接受这个计算,结果是 2,因此是错误的:

?int(log(8)/log(2)) 
 2 

这是如何以及为什么会发生的?

4

1 回答 1

3

可能是因为返回的实际数字是 double 类型。因为浮点数和双精度数不能准确地表示大多数以 10 为底的有理数,所以返回的数字类似于 2.99999999999。然后,当您应用int().999999999 时,它会被截断。

浮点数是如何工作的:它专门用于符号位,一些位用于存储指数,其余用于实际分数。这导致数字以类似于 1.45 * 10^4 的形式表示;除了基数不是 10,而是 2。

于 2013-10-08T12:43:27.613 回答