Re: [問題] int()的奇怪現象
※ 引述《VictorTom (鬼翼&娃娃魚)》之銘言:
: 把小弟穿插在您的code中間的程式碼加進去您的試試....
: PS. 用printf是因為小弟跟cout不熟, 如果您cout用得很熟練....
: 可以自行用您習慣的格式化輸出看結果應該也沒關係....
: ==
: 簡單的說結論, 精確度的問題, cout同樣輸出了1.0給你看....
: 但是存在記憶體裡的那64 bits未必真正是存了1.0真正的IEEE 754表示式....
: 因為cout預設輸出的小數位數, 讓它自動幫你做了四捨五入....
: 小弟我用printf強制指定小數位數, 才勉強能夠凸顯它的差異來....
: double的mentisa有52 bits, 換算十進位約15位的有效位數....
: 所以0.(十個9), 不特別指定輸出位數四捨五入起來都像是1....
: 但是只要它真的不到1, int()下去就會全部被強制捨棄小數位掉....
話說這是程式設計課的第一個作業...
第一回就碰到這麼多問題
雖然大大的程式碼和解釋有7成不太懂 (XD)
但重點是"精確度"
於是我就想到利用round()
再用floor()
問題就解決了!
感謝! 噢!
學到一課了啊!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.160.55
推
02/27 13:38, , 1F
02/27 13:38, 1F
→
02/27 13:39, , 2F
02/27 13:39, 2F
→
02/27 13:39, , 3F
02/27 13:39, 3F
→
02/27 13:41, , 4F
02/27 13:41, 4F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
84
220