[问题] 初学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