[問題] 有人會四捨五入嗎?

看板C_and_CPP (C/C++)作者 (正妹的天國電梯)時間16年前 (2009/04/08 19:27), 編輯推噓5(503)
留言8則, 6人參與, 最新討論串1/1
在 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

04/08 19:28, , 1F
(int)(x+0.5)
04/08 19:28, 1F

04/08 19:31, , 2F
這樣 -1.4 會變成 0 而不是 -1
04/08 19:31, 2F

04/08 19:32, , 3F
對吼..沒看清楚= =a
04/08 19:32, 3F

04/08 19:36, , 4F
用?:看看,如果你堅持的話
04/08 19:36, 4F

04/08 19:46, , 5F
floor(a+0.5)
04/08 19:46, 5F

04/08 19:50, , 6F
int i = (int)(x + 0.5 - (bool(d<0))); 如何??
04/08 19:50, 6F

04/08 19:51, , 7F
還是樓樓上的比較簡單些....Orz
04/08 19:51, 7F

04/08 19:56, , 8F
int(a + ((a >= 0) - 0.5)) 我也想到這個方法
04/08 19:56, 8F
文章代碼(AID): #19t8eBUP (C_and_CPP)
文章代碼(AID): #19t8eBUP (C_and_CPP)