[問題] 初學C想請問型態轉換的問題

看板C_and_CPP (C/C++)作者 (小張)時間11年前 (2014/09/27 11:45), 11年前編輯推噓0(003)
留言3則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 餵入的資料(Input): 如短網址內的abcde五個數值 其中a是字元 預期的正確結果(Expected Output): 本題是要求a*(b*c)+(d/e)運算過後最終的資料型態與運算結果 答案應為25689.428571 錯誤結果(Wrong Output): 執行結果卻為25689.427629 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/B7p8o4iE 補充說明(Supplement): 這是洪維恩的書的第五章習題的最後一題,但答案似乎不對 (書的答案為25689.427629)根據書上寫得不同型態的資料作 運算,會先將表示範圍小的轉成範圍大的,之後再作運算,如此 到最後應該是一個double型態的資料,故我用%f印出,這麼作 應該是沒錯才對,但結果卻是錯誤的25689.427629 小妹我目前是初學C,怎麼debug都找不出錯誤來 希望板上的大大能幫忙看看是哪邊錯了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.204.247.81 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1411789533.A.8A9.html ※ 編輯: sldw (180.204.247.81), 09/27/2014 11:49:10 ※ 編輯: sldw (180.204.247.81), 09/27/2014 11:50:07

09/27 12:09, , 1F
因為0.4的二進位表示法是無限循環小數
09/27 12:09, 1F

09/28 00:23, , 2F
a*(b*c)會是25687.999058而不是25688
09/28 00:23, 2F

09/30 17:37, , 3F
IEEE754
09/30 17:37, 3F
文章代碼(AID): #1K9ZBTYf (C_and_CPP)
文章代碼(AID): #1K9ZBTYf (C_and_CPP)