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

作者: sldw (最愛雲淡風輕)   2014-09-27 11:45:30
開發平台(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都找不出錯誤來
希望板上的大大能幫忙看看是哪邊錯了
謝謝
作者: BombCat (炸彈貓)   2014-09-27 12:09:00
因為0.4的二進位表示法是無限循環小數
作者: bluesoul (忙死你老爸)   2014-09-28 00:23:00
a*(b*c)會是25687.999058而不是25688
作者: er230059 (CQH)   2014-09-30 17:37:00
IEEE754

Links booklink

Contact Us: admin [ a t ] ucptt.com