单精度实数与双精度浮点数实数的区分

本帖子已过去太久远了,不再提供回复功能。Access俱乐部
?&&&&?&&&&?&&&&?&&&&
您的位置:  > >
建议尽量少用单精度、双精度数据类型的原因
来源:&&点击数:12197&&评论数:6 &|&&|&
时 间: 00:29:17
作 者:&&&ID:10768&&城市:上海
摘 要:建议尽量少用单精度、双精度数据类型的原因
&&&&& &&& 很多人都知道在数据库中如果需要进行精确计算的字段,尽量不使用单精度和双精度这两种数据类型。因为它们属于浮点数,而浮点数采用二进制保存小数,并且进行浮点运算,这就意味着计算的结果准确性会比较差。如果一定需要小数,则可以使用货币(Currency)型和小数(Decimal)型,这两种是量化的整数数据类型,具有高度的正确性。
通过如下代码可以非常清楚的测试出浮点数的准确度不够:
Sub 数据类型对比测试()
&&& Dim sngNum As Single
&&& Dim dblNum As Double
&&& Dim varNum As Variant&& '小数没有单独的类型,它属于Variant的子类型
&&& Dim curNum As Currency
&&& Dim lngI As Long
&&& For lngI = 1 To 1000
&&&&&&& sngNum = sngNum + 0.1
&&&&&&& dblNum = dblNum + 0.1
&&&&&&& varNum = varNum + CDec(0.1)
&&&&&&& curNum = curNum + 0.1
&&& Debug.Print &单精度:& & sngNum
&&& Debug.Print &双精度:& & dblNum
&&& Debug.Print &小数:& & & varNum
&&& Debug.Print &货币:& & & curNum
根据我们的想象,最后的结果应该是1才对,而实际返回结果为:
单精度:99.99905
双精度:99.6
小数:& 100
货币:& 100
      
&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】
Access网店
价格:¥100 元
价格:¥50 元
价格:¥1 元
(04-24 11:03)
(04-24 10:05)
(04-23 14:06)
(04-23 11:27)
(04-22 22:20)
(04-22 21:05)
(04-22 18:54)
(04-22 18:12)
(04-22 17:56)
(04-21 19:14)
Access软件网 版权所有 CopyRight
提供支持 本站特聘法律顾问: 李慧 律师您现在的位置:&&>>&&>>&&>>&&>>&正文
关于单精度和双精度实数
  用科学计数法表示双精度实数:
  #include&stdio.h&
  int main()
  double a=9;
  printf("%e",a); //标准指数形式输出单,双精度数(科学计数法)
  //数字部分小数位数为6位,小数末位四舍五入,指数支持3位
  //不支持整数
  return 0;
  关于单精度和双精度实数的有效位数的实验:
  #include&stdio.h&
  int main()
  float a=7841011;//float型小数最多有效数字为8位,整数位为0时
  double b=0.11224;//double类型数小数最多有效数字为16位,当整数位为0时
  //随着整数位数的增多,小数位有效数字逐渐减少,但相加总和不变
  //即整数位数 + 小数位数 = 有效位数(16)
  //与double类型数据的在内存单元中的结构有关
  printf("%-8.2lfhello\n",3.456);//末位四舍五入
  printf("%.16f\t%.16lf\n",a,a);//%f和%lf效果相同
  printf("%.16lf\t%.16f\n",b,b);
  return 0;
  /*即float型有效数字最多为8位,double类型有效数字最多为16位*/
【责编:peter】
没有相关文章
?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]
相关产品和培训
 友情推荐链接
 认证培训
 专题推荐
 ? ? ? ? ? ? ? ? ? ?
 今日更新
?&?&?&?&?&?&?&?&?&?&
 社区讨论
 博客论点
 频道精选
 C/C++频道相关导航扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
什么是单精度实数型和双精度实数型请通俗一点
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
单精度和双精度说的其实都是小数.单精度存放的数小一点,范围小一点,通常存放的是七位,也就是整数部分的位数加小数点的位数=7.双精度放的范围大一点.两种类型能存放的范围你自己去查吧,我现在手头上也没有书.
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 双精度型 的文章

 

随机推荐