float数据的一个问题
来源:互联网 发布:数据归一化迭代公式 编辑:程序博客网 时间:2024/05/22 01:32
前一段时间写单片机的计算器程序的时候,有一个类似于这样的表达式:
int a = 4.35 * 100;结果a被赋值为434而不是435,当时解决的办法是在表达式上加上0.5,即int a = ( (4.35 * 100) + 0.5 );问题被解决,但不知原因,遂google,然后在stack over 上发现一个帖子,帖子说这是因为4.35在内存中不能精确的表达出来,它实际的值为4.3499999999.....这样当*100后得到的值为434.9999,按照float转int的默认规则,直接舍去小数部分得434;
可我仍不明白这是为什么,于是上徳问提问,从而知道了float数据的储存采用IEEE754的标准来处理,但是。。。。我不觉得IEEE754的处理方式会导致值的丢失。。。。现在想通了:
计算机是以二进制储存数据,当十进制的int 型数据转换成二进制时倒没什么问题,可float型转换时常常会丢失,这样就导致了不能准确的表示出float型的数据了,我果然是太迟钝了么。。。。
- float数据的一个问题
- json-lib的一个BUG,Float型数据会失真
- 一个有趣的 int 与 float 数据类型的小问题
- 解决 double float 数据运算不精确的问题
- 关于字符串数据转化为float类型的问题
- mysql float 的问题
- float的精度问题
- float的存储问题
- float的定义问题
- 将单个字节数据读取到一个float类型的数据中---的几种方法
- float 数据的存储方式
- float数据的内存表示
- 关于int数据转换float数据出现输出0.0000的问题
- float double 类型数据 精度问题
- 数据编码与精度问题(float)
- float丢失精度的问题
- C++的float精度问题
- Java float的精度问题
- 求一个字符串s的最大连续递增数字子串
- Preface Numbering
- matlab 插值函数
- 矩形旋转碰撞,OBB方向包围盒算法实现
- JUnit integration test with Spring
- float数据的一个问题
- matlab绘制平滑曲线
- RS232应用----电功率计
- 游戏设计初探
- JavaScript 对象和数组
- 你真的需要CLASSPATH吗?
- eclipse maven plugin 插件 安装 和 配置
- 泰文排版规则
- VBA学习笔记