关于浮点数实际值和默认值
来源:互联网 发布:计算机程序员考试试题 编辑:程序博客网 时间:2024/05/19 00:40
1.1程序如下
1.2.结果如下:
预期:1.2F与1.2是相等的,显示后面的小数应该全是0。实际:1.2F实际是1.2000000476837158…..,并不是精确的1.2,而1.2F也与1.2不相等。原因:(1)float的有效数字只有8个,也就是1.2F输出20个位时只能保证前8位(1.2000000)是精确地,后面12位都是不精确的。
(2)由于C语言默认小数是double类型的,所以1.2是double类型的数据,当然与1.2F这个float类型的数据不相等。
程序如下:
2.2结果如下:
预期:1.3+04应该是等于1.7的。
实际:一个double型的1.3加一个double型的0.4结果不等于1.7。
原因:
计算机里的浮点数没有笔算那么精确,它的1.0也许是0.9999999993或者是1.00000000004,不能够做精确的相等判断,所以不能写1.4+0.3==1.7,1.4+0.3的结果除非在取有效数字的时候正好近似成1.7,否则就不会等于1.7了,应该相对自己所关注的有效数字,允许多几位有效数字的偏差,譬如这个程序中,当1.4+0.3和1.7相差在0.00001以内时可以认为他们相等。具体的允许偏差的位数应该视情况而定。
0 0
- 关于浮点数实际值和默认值
- 关于浮点数和IEEE754的理解
- 关于字符串转化为整型数和浮点数
- 关于浮点数
- 还是关于浮点数
- 关于浮点数
- 关于浮点数
- 关于浮点数
- 关于浮点数
- 关于浮点数
- 关于浮点数类型和布尔类型的思考
- 关于浮点数和整数在计算机中的表示
- 关于浮点数和整数在计算机中的表示
- 关于浮点数和IEEE754标准的一点理解
- 关于浮点数的存储和编码方式
- 关于printf()函数和浮点数 输出格式汇总
- C语言关于整数和浮点数的输出
- C# 浮点数和货币值常量
- 日期转string类型
- eMule学习笔记一
- JVM GC log file configuration
- linux 解压/压缩 常用命令
- Text Justification
- 关于浮点数实际值和默认值
- android-support-v4 v7 v13的区别
- 编程接口
- RESTEasy和restful WebService
- 移动端IM的APP的开发技术
- 农行提额度
- BeagleBone Black快速入门教程
- 一张图道尽程序员的出路
- 【Trie模板更新】【hdu 1251】