我在C ++中有一个很奇怪的错误。
我有两个值,max和singleStep。步骤数是stepsInt和/或stepsDbl:

max = 100;
singleStep = 0.1;
// This means that I have 100/0.1 = 1000 numbers betwwen 0 and 100
double stepsDbl = max/singleStep;
int stepsInt = (int)(stepsDbl);
cout << stepsDbl << stepsInt;


您可以期望这样的输出:

1000 1000


但是我得到以下输出:

1000 999


而且,如果我为singleStep尝试使用其他值(例如0.2),则会再次得到错误的值

500 499


我不知道发生了什么,但是很奇怪……如果有人有解决这个问题的方法,我将不胜感激。

谢谢

最佳答案

尝试以下方法:

int stepsInt = (int)floor(stepsDbl+.5);


您看到的“问题”是由于浮点数在内部存储的方式。

关于c++ - C++(int)静态转换怪异错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6448717/

10-09 23:15