[問題] 奇怪的cout結果

看板C_and_CPP (C/C++)作者 (小多啦)時間15年前 (2011/06/09 00:36), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
想問大家一下 小弟用dev c++寫程式 很簡單的宣告 double E1=0; int E2=0; cin>>E1; E1=(E1-100)*10; E2=E1; cout<<E1<<endl; cout<<E2<<endl ------------------------------- E1我輸入104.1 我最後cout出E1時 結果為41 (正確) cout出E2時 卻變成40 理論上double轉int不是取整數的部份嗎 E1都已經變成41了 為何E2是40呢 真的很奇怪 請大大們幫忙解惑一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.227.88.222

06/09 00:44, , 1F
這跟電腦計算浮點數的方法有關
06/09 00:44, 1F

06/09 00:46, , 2F
實際上的值不會是剛好41 會是40點多 所以就被捨去
06/09 00:46, 2F

06/09 00:52, , 3F
感謝A大的回答 還真是神奇
06/09 00:52, 3F

06/09 00:53, , 4F
可以查一下IEEE-754 因為電腦只能用二進位 所以才會這樣
06/09 00:53, 4F

06/09 00:54, , 5F
請參照置底十三誡之十一
06/09 00:54, 5F

06/09 01:10, , 6F
cin 這樣會過喔? XD
06/09 01:10, 6F

06/09 01:37, , 7F
打錯 是 >> 才對XD
06/09 01:37, 7F
※ 編輯: DoraBoy 來自: 125.227.88.222 (06/09 01:40)

06/09 07:48, , 8F
這不是大氣版很活躍的多拉大大嗎XD
06/09 07:48, 8F

06/09 08:27, , 9F
用modf試試看,此函式可以把整數和小數點分開.
06/09 08:27, 9F
文章代碼(AID): #1DxwKTOP (C_and_CPP)
文章代碼(AID): #1DxwKTOP (C_and_CPP)