三行代码  ›  专栏  ›  技术社区  ›  Rik Bloemers

for循环不接受任何浮点变量

  •  0
  • Rik Bloemers  · 技术社区  · 1 月前

    我有这个问题,我可以在哪里输入 "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;
    } 
    
    1 回复  |  直到 1 月前
        1
  •  6
  •   Remy Lebeau    1 月前

    您正在尝试阅读 -25.2 到a numVals 类型的变量 int . 上面写着 -25 numVals数 ,然后尝试阅读 .2 下次,它不是有效的整数。尝试此操作时,输入流变量 cin 进入故障状态,不再接受任何输入。

    改变 numVals数 发件人类型 内景 double :

    #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;
    }