1

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

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

在我放的调试器窗口中

d == dblmaxintpart

结果是真实的。

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

4

1 回答 1

3

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

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

最后, anydouble小于 1 的小数部分将完全是其自身,而 any 的小数部分和整数部分double在相加时将完全生成原始double

于 2013-10-17T14:12:39.013 回答