c语言 精度问题

[复制链接]
查看11 | 回复2 | 2009-11-17 23:51:50 | 显示全部楼层 |阅读模式
printf("%.nd",a);n为要精确的小数位例如 printf("%.3d",1.1234);输出1.123
回复

使用道具 举报

千问 | 2009-11-17 23:51:50 | 显示全部楼层
在VC++6.0中,用8个字节表示双精度类型数据,不必早年的任何版本的FORTRAN精度低,甚至还要高,要区分printf()的显示误差和双精度数据的表示误差的不同。创建一个pow()函数很容易。doublepow(doublex,unsignedn){doubleresult=x;while(--n)result*=x;returnresult;}
回复

使用道具 举报

千问 | 2009-11-17 23:51:50 | 显示全部楼层
可以自己设计一种“浮点”类型,如下:typedefstructMyfloat{longa;\\基数longn;\\10的幂数}MyFloat;这个结构使用科学计数法来表示浮点数,可以毫无误差的计算值(因为long的计算无误差),唯一的缺点就是位数有限制。也可以用字符串来表示基数和10的幂次,不过就要自己设计字符串“值”之间的计算规则了。我也曾经想过做这个MyFloat可是时间不允许,就没有完成,不然就可以发给LZ了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行