c++, static_cast <int> 的浮点计算和丢失整数的可能性

c++, static_cast <int> of float point calculation and possible of losing integers

使用以下代码:

    int ten{ 1 };
    double zeroPnine{ 0.9 };

    cout << ten - zeroPnine << endl; // 0.1
    cout << (ten - zeroPnine) * 10 << endl; // 1
    cout << static_cast <int>(ten - zeroPnine) << endl; // 0    
    cout << static_cast <int>((ten - zeroPnine) * 10 )<< endl; // 1

我希望最后一行输出1,但实际输出实际上是0,怎么会?

完整输出: 0.1
1
0
0

最好的建议是避免使用 static_cast 转换双精度。

如果您希望答案是整数,请在进行计算之前尝试将 double 转换为 int。