C++ C++;舍入行为
将0.115四舍五入为0.12是有道理的。然而,当我们将f更改为0.225时,输出为:C++ C++;舍入行为,c++,linux,g++,rounding,C++,Linux,G++,Rounding,将0.115四舍五入为0.12是有道理的。然而,当我们将f更改为0.225时,输出为: 0.115 0.12 为什么不四舍五入到0.23?您的计算机不能准确地表示大多数十进制分数,因为它可以处理二进制数。相反,它试图找到它能代表的最接近的数字,并使用它来代替 例如,“我的电脑”将以下数字表示为: 0.225 0.22 默认情况下,C++将使用正常舍入最近的数字,即,数字 5-9< /代码>被舍入, 04-4/COD>被舍入。因此,在上述数字中,0.115、0.245和0.335将被四舍五入为
0.115
0.12
为什么不四舍五入到0.23?您的计算机不能准确地表示大多数十进制分数,因为它可以处理二进制数。相反,它试图找到它能代表的最接近的数字,并使用它来代替 例如,“我的电脑”将以下数字表示为:
0.225
0.22
默认情况下,C++将使用正常舍入最近的数字,即,数字<代码> 5-9< /代码>被舍入,<代码> 04-4/COD>被舍入。因此,在上述数字中,
0.115
、0.245
和0.335
将被四舍五入为0.12
、0.24
和0.34
,而0.225
和0.445
将被四舍五入为0.22
和0.44
试着看看当您使用std::setprecision(20)
时会发生什么。请参阅。@n.m.此处不相关<例如,code>0.245将四舍五入到0.25
0.225
0.22
decimal actual representation
0.115 0.115000002
0.225 0.224999994
0.245 0.245000005
0.335 0.335000008
0.445 0.444999993