這個小程序是用來計算出2位數的第一個和第二個數字。但是,當我嘗試在數字99上使用它時,它會打印9和8,但其他2位數字似乎可以正常工作。這可能是微不足道的,但我在編程方面相對較新。在C++中鑄造不按預期方式工作
#include <iostream>
using namespace std;
void test(int num) {
float numValue = (num*1.0)/10;
cout << numValue << endl;
// prints 9.9
int firstDigit = num/10;
cout << firstDigit << endl;
// prints 9
int secondDigit = (numValue - firstDigit) * 10;
cout << secondDigit << endl;
// prints 8, supposed to be (9.9 - 9) * 10
}
int main()
{
test(99);
return 0;
}
此處的浮點數僅用於混淆和惹惱。 – chris 2013-03-26 06:06:43
[每個計算機科學家應該知道的關於浮點運算的知識](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)。這很長,但它回答你的問題... – Cornstalks 2013-03-26 06:07:28
謝謝你們,我會+1你的意見,但我不認爲我還能 – xyz 2013-03-26 06:08:47