在这种情况下(对象 - ,的iOS): float a = 0.99999f;
int b = 1000;
int c = a + b;
在结果c = 1001。我发现它发生是因为b转换为float(特定于iOS),因此a + b没有足够的精度来处理1000.9999和(为什么?)被四舍五入为较高值。如果a是0.999f,我们得到c = 1000 - 理论上正确的行为。 所以我的问题是为什
假设我的计算机使用IEEE 754浮点编码,我不知道什么是它下面的函数返回false的最小数量: constexpr bool test(const unsigned long long int x)
{
return static_cast<unsigned long long int>(static_cast<double>(x)) == x;
}