C++ 为什么(1UL<;<;53)加1.0不等于它本身?
说C++ 为什么(1UL<;<;53)加1.0不等于它本身?,c++,floating-point,C++,Floating Point,说 int64\u t x=(1UL) 表达式x+1.0使用浮点运算完成 假设使用了,则最多可以精确表示253个整数 表达式x+1.0使用浮点运算完成 假设使用了,则最多可以精确表示253个整数。行x+=1.0的计算结果为 x+= 1.0; 数字2^53+1=9007199254740993不能准确地表示为IEEEdouble,因此它被四舍五入为2^53=9007199254740992(实际上这取决于当前的四舍五入模式),然后(无损地)转换为int64\t行x+=1.0 x+= 1.0;
int64\u t x=(1UL)
表达式x+1.0
使用浮点运算完成
假设使用了,则最多可以精确表示253个整数
表达式x+1.0
使用浮点运算完成
假设使用了,则最多可以精确表示253个整数。行x+=1.0
的计算结果为
x+= 1.0;
数字2^53+1=9007199254740993
不能准确地表示为IEEEdouble
,因此它被四舍五入为2^53=9007199254740992
(实际上这取决于当前的四舍五入模式),然后(无损地)转换为int64\t
行x+=1.0
x+= 1.0;
数字2^53+1=9007199254740993
不能准确表示为IEEEdouble
,因此它被四舍五入为2^53=9007199254740992
(实际上这取决于当前的四舍五入模式),然后(无损地)转换为int64\t
x = (int64_t)((double)x + (double)1.0);