[心得] 寫程式時,不可偷懶呀!!!

看板NTUEE110HW作者 (ㄚ軒)時間19年前 (2006/10/25 22:13), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/3 (看更多)
我是懶人 故我在寫 fac e e^x那題時 直接設一個 unsigned long fac(int y) 用這個去跑階層..... (這樣到20!都可以用"非科學計號"表示) 但當用fac()去做e 和e^x時 就導致"因為long在分母,所以正小數變小有一定的線制" 換句話說 1/(20!) 應該是4.1 x 10^(-19) 但因為偷懶,變成了1/(20!) 只有約10^(-10)..... 所以5^20/20! 就一定會爆表(大很多 ><) 故數據就會不正常.... -------------------------------------------------------------------- 故事還沒結束............... -------------------------------------------------------------------- 後來我發現 如果把fac改成double e^x就會很正常........ 但聰明的各位一定知道...... 這樣不要說20! 在做10!就得換成科學計號了 小朋友, 這個故事告訴我們: 魚 與 熊掌 難得兼呀! 要做個認真的 乖小孩唷!! 冏冏冏冏冏冏 冏    冏 冏  冏 冏冏冏冏冏冏 -- ◢█◢███◢◤◢█◣◢███◢█◣ ██████◤◥███ꄊ◥█████◥◣ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.212.172

10/25 22:38, , 1F
用fixed可以限制不要用科學記號
10/25 22:38, 1F

10/25 22:39, , 2F
再用setprecision限制小數點位數
10/25 22:39, 2F

10/25 22:49, , 3F
fixed對常整數沒用吧?
10/25 22:49, 3F

10/25 22:59, , 4F
可是我有用到耶...
10/25 22:59, 4F
文章代碼(AID): #15Ft48e7 (NTUEE110HW)
文章代碼(AID): #15Ft48e7 (NTUEE110HW)