在Visual C ++ 2010中,我尝试了这个
double d= DBL_MAX;
double dblmaxintpart;
modf(DBL_MAX, &dblmaxintpart);
在调试器窗口中我输入
d == dblmaxintpart
结果为 true 。
我可以假设DBL_MAX等于其整数部分作为始终有效的断言吗?
答案 0 :(得分:3)
是的,表示整数的double
的整数部分始终是double
本身,即使在DBL_MAX
。实际上,任何大于2 ^ 52的double
都将自身作为整数部分,因为该大小的双精度数没有足够的mantissal位来表示分数。
出于类似的原因,并非所有2 ^ 53以上的整数都可以表示为double
s(虽然转换为double
时,它们仍然是整数)。
最后,小于1的任何double
的小数部分将完全独立,任何double
的小数部分和整数部分在添加时将完全生成原始double