[問題] C++ 小數點無條件進位

看板C_and_CPP (C/C++)作者 (Terry)時間14年前 (2011/10/14 18:34), 編輯推噓2(2018)
留言20則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2008 問題(Question): 我想要將小數點做無條件進位,例如: 10/3=4 10/6=2 10/7=2 10/8=2 10/9=2 .... 不知道各位前輩有什麼想法? 我有想過說強制轉換的方式,doutble->int,不過總覺得應該不可行 所以想來問一下,有沒有什麼方式可以計算出來 謝謝幫忙 -- ※ 發信站 :批踢踢實業坊(ptt.cc) ◆ From: 114.34.100.113

10/14 18:36, , 1F
ceil()
10/14 18:36, 1F

10/14 18:37, , 2F
我去查詢一下,謝謝幫忙
10/14 18:37, 2F

10/14 18:38, , 3F
感覺應該是可行的,我試試看,謝謝了
10/14 18:38, 3F

10/14 18:42, , 4F
脫褲子放屁法 : c=a/b+(a%b!=0)
10/14 18:42, 4F

10/14 18:48, , 5F
記下來了,感謝^_^
10/14 18:48, 5F

10/14 18:51, , 6F

10/14 18:55, , 7F
不能直接加1,像 10/5 的話直接加就不對了.
10/14 18:55, 7F

10/14 18:57, , 8F
應該是這樣 耍蠢了 http://codepad.org/VSsAbCVr
10/14 18:57, 8F

10/14 21:51, , 9F
int ceil(double d) { return int(d + 0.5); }
10/14 21:51, 9F

10/14 21:51, , 10F
不是這樣就好了嗎?
10/14 21:51, 10F

10/14 22:22, , 11F
你那個是四捨五入吧…
10/14 22:22, 11F

10/14 23:41, , 12F
請考慮溢位情況...
10/14 23:41, 12F

10/15 00:17, , 13F
orz 不然用bit運算跑好了
10/15 00:17, 13F

10/15 01:13, , 14F
啊對後, 腦子昏了XD
10/15 01:13, 14F

10/15 01:17, , 15F
轉整數和浮點數比的狀況也要考慮表示法誤差的問題...
10/15 01:17, 15F

10/15 01:43, , 16F
最大問題是.. double x=1.23E20 , 壓根兒轉不過去.
10/15 01:43, 16F

10/15 01:43, , 17F
當然可說我是吹毛求疪,只是表達,簡單的math.h並不簡單.
10/15 01:43, 17F

10/15 13:11, , 18F
如果兩整數相除,用t大的方法會比較好!
10/15 13:11, 18F

10/16 21:55, , 19F
c = (a+b)/b
10/16 21:55, 19F

10/16 22:13, , 20F
c=(a+b)/b; 和用加法做 swap 一樣的有溢位風險。
10/16 22:13, 20F
文章代碼(AID): #1Ec117Wz (C_and_CPP)
文章代碼(AID): #1Ec117Wz (C_and_CPP)