读书人

一个输出小数的程序最后一位小数为什

发布时间: 2012-10-21 09:00:07 作者: rapoo

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

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 

读书人网 >C++

热点推荐