我做了這樣的事情自動四捨五入一個
long double n;
cin >> n;
n = n * 10000;
long long int temp = (long long) n;
現在,當我嘗試打印溫度,然後在一些測試情況下,問題occours像2.36
爲2.36的價值溫度應該是23600,但臨時的價值出來是23599
請別人幫我這個已經有4代錯答爲這個..小問題
˚F或簡化.. 我的代碼是這樣
int main()
{
int t;
for(scanf("%d", &t); t-- ;) {
float n;
scanf("%f", &n);
n *= 10000;
long int as = (long int) n;
cout << "\nas : " << as << " n : " << n << endl;
long a, b;
a = as;
b = 10000;
while(a%b != 0) {
long temp = a % b;
a = b;
b = temp;
}
long factor = b;
cout << (10000/factor) << endl;
}
return 0;
}
這一計劃的目的是什麼的..我得到了許多小數點後4位是最多可以有。那是一個擊球手得分的平均得分,所以我們必須找到他應該得到這個得分的最小比賽數量
IEEE-754浮點問題:舍入錯誤。 (http://floating-point-gui.de/) –
'double'不是一個確切的類型。你沒有*確切的數值'2.36'。 –
並注意演員不需要。編譯器會在不被告知的情況下執行**轉換**。 –