光阴时钟 发表于 2017-5-5 21:48

关于一个float类型数据问题

本帖最后由 光阴时钟 于 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不就是数字了吗{:lol:}

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,取整
页: [1]
查看完整版本: 关于一个float类型数据问题