for 循环不采用任何浮点变量

0 c++ floating-point for-loop

我有这个问题,我可以输入"2 10 8",它会输出"8",但我希望能够输入"2 -25.2 -38.4"。这会立即使for循环崩溃,并且程序会显示"-25.0"而不是"-25.2",从而有效地删除小数位上的数字。

有谁可以帮忙吗?

int main() {
    int numVals;

    static_cast<double>(numVals);
    double minVal;
    int i;
    int iteration;
    cin >> iteration;

    for (i = 0; i < iteration; ++i) {
        cin >> numVals;
        numVals = numVals * 10; //program completely ignores this...
        if (i == 0) {
            minVal = numVals;
        }
        else if (numVals < minVal) {
            minVal = numVals;
        }
    }

    cout << fixed << setprecision(1)  << minVal / 10 << endl;

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

小智 6

您正在尝试读取-25.2类型numVals的变量int。它读取-25numVals,但随后尝试下次读取.2,这不是一个有效的整数。当您尝试此操作时,输入流变量cin将进入失败状态,并且不再接受任何输入。

numVals从类型更改intdouble

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    double numVals;
    double minVal;
    int i;
    int iteration;

    cin >> iteration;

    for (i = 0; i < iteration; ++i)
    {
        cin >> numVals;
        numVals = numVals * 10;
        if (i == 0)
        {
            minVal = numVals;
        }
        else if (numVals < minVal)
        {
            minVal = numVals;
        }
    }

    cout << fixed << setprecision(1) << minVal / 10 << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)