c++ - DBL_MAX 整数部分相等

标签 c++ visual-c++ integer double max

在 Visual C++ 2010 中,我试过这个

double d= DBL_MAX;
double dblmaxintpart;
modf(DBL_MAX, &dblmaxintpart);

在我放置的调试器窗口中

d == dblmaxintpart

结果为 true

我可以假设 DBL_MAX 等于它的整数部分作为一个始终有效的断言吗?

最佳答案

是的,表示整数的 double 的整数部分始终是 double 本身,即使在 DBL_MAX 时也是如此。事实上,任何大于 2^52 的 double 都会将其自身作为整数部分,因为该大小的 double 没有足够的尾数位来表示分数。

出于类似的原因,并非所有大于 2^53 的整数都可以表示为 double(尽管当转换为 double 时,它们仍然是整数)。

最后,任何小于 1 的 double 的小数部分将恰好是它本身,而任何 double 的小数部分和整数部分相加时,将恰好产生原始 double

关于c++ - DBL_MAX 整数部分相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19428965/

相关文章:

c++ - 如何确保一个类没有虚方法?

c++ - C 中的逻辑运算符和位操作

c++ - QML:如何创建半透明/半透明的 WebView 元素?

c++ - boost::adaptors::strided 不能在boost::adaptors::transformed 之后使用?

java - String.format() 获取最大值

java - 如何创建一个 int 数组,其中包含给定范围内随机打乱的数字

c++ - 如何在 Windows 上为 ARM 编译 C++ 库

c++ - 鼠标点击 handle

c++ - "Mixing a dll boost library with a static runtime is a really bad idea..."

不使用 atoi 将字符串转换为整数