这个输入中float和double有什么区别?

时间:2014-10-06 05:26:58

标签: c++ floating-point double

我有两个输入,唯一的区别是我在第二个输入中用“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

2 个答案:

答案 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)  

最好在比较浮点数时使用显式转换。