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

不同格式输出实型数的有关问题

2012-03-28 
不同格式输出实型数的问题求教为什么此程序的%f输出的结果会是“123.456001”?#include stdio.hvoidmain()

不同格式输出实型数的问题
求教为什么此程序的%f输出的结果会是“123.456001”?
#include <stdio.h>
void   main()
{
        float   f=123.456;
        double   d1,d2;
        d1=1111111111111.111111111;
        d2=2222222222222.222222222;
        printf( "%f,%12f,%12.2f,%-12.2f,%.2f\n ",f,f,f,f,f);
        printf( "d1+d2=%f\n ",d1+d2);
        getchar();
}


[解决办法]
float double类型并没有绝对精确值的
就跟你比较f类型与0的关系
if(-0.000001<f && f<0.000001)

[解决办法]
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。

热点排行