这个小程序用于计算2位数的第一位和第二位数。但是,当我尝试在数字99上使用它然后它打印9和8,但其他2位数字似乎工作正常。这可能是微不足道的,但我在编程方面相对较新。
#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;
}
答案 0 :(得分:1)
这是因为(numValue - firstDigit)
不完全是0.9,而是0.89999...
,因为浮点数通常不准确。因此,当您将0.8999...
乘以10时,您会得到8.999...
的结果但是,您将它放入int
变量中,因此它会被修剪并且恰好为8。
您确实不需要浮点运算来完成您的确切任务,但使用整数就足够了。