电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
float 型运算
已解决
73482
个问题
已帮助
5993
位优秀工程师
float 型运算
花生大事
2018-07-03
浏览量:744
float ab;
u16 ij;
i=15;
j=6;
a=i*0.1;
b=j*0.1;
结果为什么b=0.600000024
而不是0.6
显示全部
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
xdsnet
浮点数因为计数和计算过程中(二进制数计算)难免引入一些误差,这个没有办法避免,所以不要直接用两个浮点数做相等比较,而是相差绝对值在一个范围内就好。
发布于
2018-07-03
举报
评论 0
1
0
其他答案
数量:
5
Angel_YY
用二进制浮点数来表示十进制小数,大部分情况下是会有误差的。例如十进制的0.1换算成二进制就是个无限循环浮点数,尾数无限、但是实际存储时又只能存那么几位,自然就有误差。所以这个浮点数的误差是浮点数在存储为二进制时造成的,不可避免。
发布于
2018-07-03
举报
评论 0
1
0
莱克迷KW
在单片机上,浮点的计算本质上还是int型的计算,这样的计算就会有一个误差的,由于进行了数据转换嘛。
发布于
2018-07-03
举报
评论 0
1
0
勇哥来巡山
这个是由于单片机不带FPU所以本质上还是整数运算,只是进行数据的转换,当然会丢失精度
发布于
2018-07-04
举报
评论 0
1
0
菜鸟冷虎
主要是你的单片机没有FPU,不能进行浮点数运算,只要通过整形去变换,这样是会丢失一部分精度的
发布于
2018-07-15
举报
评论 0
0
0
donatello
楼主试试用printf("%f",b);看看结果?结果肯定是0.600000没错,不可能后面有24的后缀的,楼主应该在别的什么地方也使用过这个b变量。
发布于
2018-07-28
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
float 型运算
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: