将log10()用于浮点数-2.584877722073e-33时出错

时间:2013-12-18 03:09:17

标签: c++ floating-point-precision logarithm

我在尝试使用浮点数时遇到了一个奇怪的错误。我正在尝试计算以下数字的log10(在“math.h”中):

-0.000000000000000000000000000000002584877722073    ==    -2.584877722073e-33

它一直在崩溃。这是一个有效的浮动吗?当然,我正在处理浮动本身的原始数据。

我研究了花车,根据我的理解,这不是NaN,Inf或非正规数。二进制文件似乎不匹配任何无效的东西:

1 | 00010010 | 10101101011111001000100

这种精度对数字有限制吗?可能导致这个问题的原因是什么?

1 个答案:

答案 0 :(得分:5)

您无法计算负数的对数并期望得到实际结果。您应该收到域错误。