将一个整数除以一个双精度数

Dividing an integer with a double

我有一个非常简单的问题。

    std::cout << std::setprecision(2);
    for (int i = 3; i > 0; i--) {
       std::cout << i / 3.0 << " ";
    }

以上代码给出了输出:

1 0.67 0.33

为什么 i = 3 return 是整数,而 i = 2i = 1 return 是双数?精度设置为 2 而我们除以双精度,所以我很困惑。

setprecision(n); 表示要使用的最大数字 n,而不是最小数字。请记住,尾随零会被自动丢弃,当您将 3 除以 3.0 时会发生这种情况,结果为 1.000...但零会被丢弃。如果您想始终获得 n 数字,则必须像这样使用 std::fixed

cout << fixed;
cout << setprecision(2);

它会给你 2 个数字,所以例如 3 / 3.0 会产生 1.00