S******n 发帖数: 489 | 1 for (double i = 0.1; i < 10; i = i + 0.1)
cout << i << endl;
for (double i = 1; i < 10; i ++)
cout << i << endl;
为什么第二个for循环输出1到9,而第一个for循环输出0.1到10.0呢? |
y****e 发帖数: 23939 | |
S******n 发帖数: 489 | 3 因为做simulation, i是一个traffic的参数,看参数不断增加的结果和理论结果是否相
同。本来我以为最后一个会是9.9,结果10也输出了,虽然不太影响,不过就是不知道为
什么,莫非9.9 + 0.1后是一个稍小于10的浮点数?
【在 y****e 的大作中提到】 : 为什么要用浮点数作循环变量呢?
|
t****t 发帖数: 6806 | 4 >> 9+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1-10
ans =
-3.5527e-015
浮点数比较, 要留有余地. ==基本上是不能用的.
道为
【在 S******n 的大作中提到】 : 因为做simulation, i是一个traffic的参数,看参数不断增加的结果和理论结果是否相 : 同。本来我以为最后一个会是9.9,结果10也输出了,虽然不太影响,不过就是不知道为 : 什么,莫非9.9 + 0.1后是一个稍小于10的浮点数?
|
a****l 发帖数: 8211 | 5 the second one does not make sense. Being able to compile and run does not
mean you should do things like this.
【在 S******n 的大作中提到】 : for (double i = 0.1; i < 10; i = i + 0.1) : cout << i << endl; : for (double i = 1; i < 10; i ++) : cout << i << endl; : 为什么第二个for循环输出1到9,而第一个for循环输出0.1到10.0呢?
|
t****t 发帖数: 6806 | 6 第二个其实虽然不好, 但还是对的
浮点数在(32位)整数范围内还是精确的
not
【在 a****l 的大作中提到】 : the second one does not make sense. Being able to compile and run does not : mean you should do things like this.
|
O*******d 发帖数: 20343 | 7 用浮点数作累积的结果是不可预测的。加一百次0.1的结果和加10次1的结果是不一样的
。 |