例如,
如果我有int A = 106和float B = 10.345f,哪个运算具有更好的精度,A + B或者(float)A + B?或者它们实际上具有相同的精度吗?
不,没有区别。添加两个算术类型时,编译器会应用一组隐式转换。您可以在cppreference上找到这些规则的列表。在您的情况下,规则 3) 适用:
- 否则,如果一个操作数是浮点型、浮点复数型或浮点虚数型,则另一操作数将按如下方式隐式转换:
- 整数类型转为浮点数(唯一可能的实数类型是浮点数,它保持原样)
- [...]
因此,如果您没有使用强制转换显式声明转换,编译器会隐式为您执行完全相同的转换。而且由于表达式实际上是相同的,因此精度上也没有差异。
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |