首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个输出小数的程序,最后一位小数为什么输出异常?

2012-10-21 
一个输出小数的程序,最后一位小数为什么输出错误???C/C++ codeint printDecimal(double f, int decPlaces)

一个输出小数的程序,最后一位小数为什么输出错误???

C/C++ code
int printDecimal(double f, int decPlaces) // decPlaces表示小数个数{    int intPart = 0;    for (int i = 0; i < decPlaces; ++i) {        f *= 10;        intPart = (int)f;        printDigit(intPart); // 此函数只能输出单个数字,也就是只能输出0到9之间的整数        f = f - intPart;    }    cout << "---" << endl;    return 0;}

printfDecimal(0.123, 3);为什么输出为0.122 ?


[解决办法]
0.123在内存中存的值是0.1229999....所以你打印三位出来的是0.122,你可以打印4位看看
[解决办法]
没搞懂浮点数的本质
不要写这类程序

不久前有个类似的帖
http://topic.csdn.net/u/20121007/19/45e68c30-4fe9-4c9f-b18f-69da83c7d8ca.html
[解决办法]
浮点数在计算机中存储的是不精确的数
[解决办法]
你不如把浮点转成字符串,然后输出string的各个字符为妙
[解决办法]
上伪代码:
Perl code
def print_dec(f,i)    af = f.to_s.split('')    i=-1 if i== 0    af[0..af.index('.')+i].each {|c|printf c}end 

热点排行