c++ - 将 log10() 用于 float 时出错 -2.584877722073e-33

标签 c++ floating-point-precision logarithm

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

-0.000000000000000000000000000000002584877722073    ==    -2.584877722073e-33

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

我研究过 float ,根据我的理解,这不是 NaN、Inf 或非正规数。二进制文件似乎不匹配任何无效内容:

1 | 00010010 | 10101101011111001000100

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

最佳答案

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

关于c++ - 将 log10() 用于 float 时出错 -2.584877722073e-33,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649004/

相关文章:

c++ - 使用 OpenCV cv::Mat.at 函数时如何使用正确的类型名称

android - NDK 应用程序 onDestroy 清理 - 如何分离当前线程

c++ - 从 boost asio 套接字读取并打印到终端

C++ 原子对象无锁保证

c++ - N 个区间的 bool 规则 (C)

c - SDL - Blit Surface 将浮点值作为 rect 参数传递

c - 在 c 中确定运行时的精度

Python - 如何将列表转换为日志(列表)

matlab - 无法用对数轴绘制面积

javascript - 如何在 HighCharts 中绘制对数刻度的饼图?