C++ 中 (float + int) 和 (float + (float)int) 之间有精度差异吗?

TIA*_*ZHU 0 c++

例如,

如果我有int A = 106float B = 10.345f,哪个运算具有更好的精度,A + B或者(float)A + B?或者它们实际上具有相同的精度吗?

Jak*_*ark 5

不,没有区别。添加两个算术类型时,编译器会应用一组隐式转换。您可以在cppreference上找到这些规则的列表。在您的情况下,规则 3) 适用:

  1. 否则,如果一个操作数是浮点型、浮点复数型或浮点虚数型,则另一操作数将按如下方式隐式转换:
    • 整数类型转为浮点数(唯一可能的实数类型是浮点数,它保持原样)
    • [...]

因此,如果您没有使用强制转换显式声明转换,编译器会隐式为您执行完全相同的转换。而且由于表达式实际上是相同的,因此精度上也没有差异。