作者kurorokrr (正妹的天國電梯)
看板C_and_CPP
標題[問題] 有人會四捨五入嗎?
時間Wed Apr 8 19:27:01 2009
在 VC++ 中
double x =
1.9
printf("%d", static_cast<int>(
x));
會得到
1
x =
-1.9
printf("%d", static_cast<int>(
x));
會得到
-1
如果要四捨五入的話
if(x >= 0)
x += 0.5;
else
x -= 0.5;
printf("%d", static_cast<int>(x));
才會得到正確的結果
但是必須用到 if else
有人有比較好的方法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.172.237
1F:推 gozha:(int)(x+0.5) 04/08 19:28
2F:→ kurorokrr:這樣 -1.4 會變成 0 而不是 -1 04/08 19:31
3F:→ gozha:對吼..沒看清楚= =a 04/08 19:32
4F:推 legnaleurc:用?:看看,如果你堅持的話 04/08 19:36
5F:推 pinchieh:floor(a+0.5) 04/08 19:46
6F:推 VictorTom:int i = (int)(x + 0.5 - (bool(d<0))); 如何?? 04/08 19:50
7F:→ VictorTom:還是樓樓上的比較簡單些....Orz 04/08 19:51
8F:推 chrisdar:int(a + ((a >= 0) - 0.5)) 我也想到這個方法 04/08 19:56