我在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/