C++ Eclipse将鼠标悬停在c++;

C++ Eclipse将鼠标悬停在c++;,c++,eclipse,C++,Eclipse,我正在调试下面的代码 result = 30 / 1000000000.0 rst = result * 1000000000 cout << "rst:" << rst << endl; result=30/100000000.0 rst=结果*100000000 cout实际上,两者都没有给出存储在rst中的二进制值的精确十进制表示形式。 cout的输出是四舍五入的,Eclipse的值是四舍五入/截断的,或者是存储在浮点变量中时会产生相同位模式的值 我不

我正在调试下面的代码

result = 30 / 1000000000.0
rst = result * 1000000000
cout << "rst:" << rst << endl;
result=30/100000000.0
rst=结果*100000000

cout实际上,两者都没有给出存储在rst
中的二进制值的精确十进制表示形式。
cout
的输出是四舍五入的,Eclipse的值是四舍五入/截断的,或者是存储在浮点变量中时会产生相同位模式的值

我不知道IEEE浮点计算的确切规则,但由于浮点数的精度有限,任何二进制数(至少有一个小数位数)的精确十进制表示必须以五结尾,因为1/2^n总是类似于0。。。5表示任何n>=0

首先,这意味着30/100000000.0的精确结果无法用任何浮点类型(甚至不是双精度)准确表示,因此,30/100000000.0*100000000.0不是标识操作。(这与十进制中的1除以3的问题相同)


第二,这也意味着29.999999999…6不能是rst中存储的数据的精确十进制表示形式。

rst的数据类型是什么?浮点数会出现各种舍入错误。Eclipse向您显示了完整的、稍有错误的值,而cout正在进一步舍入该值,以使打印输出更加美观@RahulTripathi结果和rst都是双重的:@是的,这是浮点数。