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。
使用以下代码:
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。