请问下大家,51编译的计算器会不会有误差?

Learner_new   2012-2-14 15:34 楼主

这几天编了个计算器,编好之后发现有些计算不准确,比如说5.6*3=16.799999(计算器保留六位有效数字),是系统计算时出错呢,还是程序有问题啊,我程序检查了一下,貌似没什么错,我是新手,望大家给点意见啊, 不知道大家有没有碰到类似的情况????

 

注:我是用double定义结果和输入的两个值的

[ 本帖最后由 Learner_new 于 2012-2-14 15:44 编辑 ]

回复评论 (2)

这个没有错,很正常的,浮点数在单片机里面存储都会有有个误差的。比如5.6,实际在单片机里面有可能是5.9999,大概这个样子吧。要解决这个问题一个是增加浮点数的位数,一般单片机里面folat类型的都是四个字节的,这个好像没有办法解决了。但是可以通过限定显示位数,然后进行四舍五入实现。这样16.799999可以显示成16.80000.
点赞  2012-2-15 15:34

回复 沙发 jishuaihu 的帖子

我懂了  非常感谢!
点赞  2012-2-17 13:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复