我有两个输入,唯一的区别是我在第二个输入中用“float”替换“double”。但是,第一个可以按预期运行,但不能运行第二个。第二个不以0.1的输入结束。有谁对此有一些想法?非常感谢!
首先输入:
#include <iostream>
using namespace std;
int main()
{
double input;
input = 0;
double sum = 0;
cout << "Please enter a series numbers and end with 0.1: ";
cin >> input;
while (input != 0.1)
{
sum += input;
cout << "The cumulative sum is: " << sum << endl;
cin >> input;
}
return 0;
}
Please enter a series numbers and end with 0.1: 1 2 3 0.1
The cumulative sum is: 1
The cumulative sum is: 3
The cumulative sum is: 6
第二次输入:
#include <iostream>
using namespace std;
int main()
{
float input;
input = 0;
float sum = 0;
cout << "Please enter a series numbers and end with 0.1: ";
cin >> input;
while (input != 0.1)
{
sum += input;
cout << "The cumulative sum is: " << sum << endl;
cin >> input;
}
return 0;
}
Please enter a series numbers and end with 0.1: 1 2 3 0.1
The cumulative sum is: 1
The cumulative sum is: 3
The cumulative sum is: 6
The cumulative sum is: 6.1
答案 0 :(得分:6)
0.1
中的 (input != 0.1)
是最接近理性1/10的double
。最接近此理性float
的{{1}}代表不同的值,并且不会使此条件成立。
如果您想在程序中使用0.1f
,请使用float
作为相应条件。
答案 1 :(得分:1)
您必须明确地将0.1
投射到float
,如:
while(input != (float)0.1)
最好在比较浮点数时使用显式转换。