矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2562|回复: 3

这个LCD显示小数的程序挺会耍宝啊!

[复制链接]
     
发表于 2018-2-15 22:59:24 | 显示全部楼层 |阅读模式
一个用51单片机搭配1602LCD显示屏搭伙显示小数变量的小程序,小数点前保留3位,小数点后保留3位。
但是有个奇怪的现象,将变量a=123.4567定义为float时,正确显示123.456
                                                       定义为uchar和uint时,显示123.004,奇怪了,此值如何得来。
另外程序中每行前面都有个unsigned long的语句,听说是数据类型转换,那是转换a的初值还是取模取余后的运算值。
老师指导下。
LCD.jpg
     
发表于 2018-2-17 20:50:10 | 显示全部楼层
uchar uint 那来的0.456?
回复 支持 反对

使用道具 举报

     
发表于 2018-2-20 10:11:54 | 显示全部楼层
float 转 unsigned int 会丢失小数部分.
unsigned int 转 float 会丢失精度,比如2,会转换成1.9999999这种
unsigned long是强制转换,就是把float型的a,转换成 unsigned long 型(8BIT,CPU上占4字节)
根据运算顺序,是先转换后运算.

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 14:24:08 | 显示全部楼层
haisens 发表于 2018-2-20 10:11
float 转 unsigned int 会丢失小数部分.
unsigned int 转 float 会丢失精度,比如2,会转换成1.9999999这种
...

括号内的先计算,后转换。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-30 18:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表