在這種情況下(對象 - ,的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;
}