[嵌入式linux] 关于一个float类型数据问题

[复制链接]
1529|7
 楼主| 光阴时钟 发表于 2017-5-5 21:48 | 显示全部楼层 |阅读模式
本帖最后由 光阴时钟 于 2017-5-5 22:52 编辑

想请教一下各位大神,一个float类型数据在keil c中保留几位小数点?只想要前四位小数,如何去除我不想要的小数呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xyz549040622 发表于 2017-5-5 23:04 | 显示全部楼层
由float的有效位数决定,有效数字是7位。你可以sprintf函数强制取四位数字。也可以乘以10000取整然后除以10000.
 楼主| 光阴时钟 发表于 2017-5-7 12:54 | 显示全部楼层
xyz549040622 发表于 2017-5-5 23:04
由float的有效位数决定,有效数字是7位。你可以sprintf函数强制取四位数字。也可以乘以10000取整然后除以10 ...

sprintf不行吧?这不是把他数据转成字符串吗
xyz549040622 发表于 2017-5-7 18:49 | 显示全部楼层
光阴时钟 发表于 2017-5-7 12:54
sprintf不行吧?这不是把他数据转成字符串吗

对,转成字符串,减去0x30不就是数字了吗
linqing171 发表于 2017-5-7 20:01 | 显示全部楼层
乘以10000,加上0.5,转换成整数。在c#中有decimal,是x*10^y,而不是这种x*2^y。
linqing171 发表于 2017-5-7 20:02 | 显示全部楼层
round和floor函数也可以,math.h 里面有一些函数。
舔茶嘛光 发表于 2019-12-16 15:03 | 显示全部楼层
xyz549040622 发表于 2017-5-5 23:04
由float的有效位数决定,有效数字是7位。你可以sprintf函数强制取四位数字。也可以乘以10000取整然后除以10 ...

没用。乘以1000,除以1000,又变成9位数,它会强行补全
ayb_ice 发表于 2019-12-17 14:03 | 显示全部楼层
先减掉整数部分,然后*1000,取整
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

31

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部