[問題] C語言新手問題

看板C_and_CPP作者 (Fighting)時間15年前 (2010/07/29 23:44), 編輯推噓1(103)
留言4則, 4人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) float sum = 0; for (float d=0.1f;d<=1.0f;d+=0.1f) sum+=d; double sum = 0; for (double d=0.1;d<=1.0;d+=0.1) sum+=d; 兩個loop是用來計算0.1+0.2+...+1.0 第一個loop跑出4.5 另一個是5.5 我想問為啥第一個是4.5??? 是我哪裡觀念弄錯了?? 難道0.9f+0.1f <= 1.0f 這是錯的?? 有請高手解答一下 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) vc++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.11.225.31

07/29 23:53, , 1F
浮點數運算會有精確度的問題...
07/29 23:53, 1F

07/30 00:22, , 2F
迴圈計數最好還是用整數http://tinyurl.com/2efntvx
07/30 00:22, 2F

08/01 23:27, , 3F
loop用浮點數跑也太怪了吧
08/01 23:27, 3F

08/16 10:46, , 4F
把d印個9位數出來看就知道了
08/16 10:46, 4F
文章代碼(AID): #1CKQ7f6- (C_and_CPP)