实型数据的精确度

1、实型数据的舍入误差

实型变量占据有限的存储单元,所以它能提供的有效数字也是有限的。在有效位以外的数字将被舍去,因此就会产生一些误差,如下例:

# include <stdio.h>
  void main(){
    float x;
    x = 1.23456789;
    printf("x=%f",x);
}

运行结果为:x=1.234568

这是由于x为单精度浮点数,只能提供7位有效数字,因此后面的几位被舍弃了。


2、按双精度处理实数

由于单精度(float)型数据只能提供7位有效数字(第7位还不是完全准确地),因此为了提高数据的精度,可以将变量定义为双精度类型,用8个字节存储数据,得到15~16位有效数字。

在上面的例子中 x=1.23456789,在程序编译时,编译系统会发出警告:“truncation from 'const double' to 'float'”,即“将一个double常数转换成float”,提醒用户可能会损失一些精度,但这不是致命的,程序可以接着进行连接和运行,按单精度(float)存放数据并得到相应的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值