#include<iostream>
long myround(float f)
{
if (f >= UINT_MAX) return f;
return f + 0.5f;
}
int main()
{
f = 8388609.0f;
std:cout.precision(16);
std::cout << myround(f) << std::endl;
}
輸出:8388610.0浮動舍入誤差
我試圖使輸出的感覺。大於 8388609.0的下一個浮點數是8388610但是爲什麼四捨五入的值不是8388609?
_「下一個大於8388609.0的浮點數是8388610」_你是如何得出這個結論的? –
單精度浮點數沒有足夠的空間來保證表示所有這些十進制數字(多於六個)。你想要做什麼? –
此代碼不能編譯。你沒有'f'的聲明。張貼您的_actual_ [MCVE],導致規定的輸出。 –