[应用相关]

想得到浮点数的整数和小数部分

[复制链接]
980|14
手机看帖
扫描二维码
随时随地手机跟帖
Edisons|  楼主 | 2017-3-22 11:53 | 显示全部楼层 |阅读模式
编程时,想得到浮点数的整数和小数部分,哪位有解决的办法?
wanglaojii| | 2017-3-22 11:56 | 显示全部楼层
两位小数*100,三位小数*1000,以此类推,可以用这个思路试试

使用特权

评论回复
laozhongyi| | 2017-3-22 11:58 | 显示全部楼层
用乘法放大缩小的吧 可以试试。。。

使用特权

评论回复
Edisons|  楼主 | 2017-3-22 12:01 | 显示全部楼层
利用乘法的放大数据的倍数的,输出的时候在缩小相应的倍数的就可以的啦。

使用特权

评论回复
_gege| | 2017-3-22 12:04 | 显示全部楼层
Edisons 发表于 2017-3-22 12:01
利用乘法的放大数据的倍数的,输出的时候在缩小相应的倍数的就可以的啦。 ...

是的,我一般也是这么处理的。。

使用特权

评论回复
Mozarts| | 2017-3-22 12:07 | 显示全部楼层
float的类型 直接转换就行的,如果串口,就转换为字符串就行的。

使用特权

评论回复
Listate| | 2017-3-22 12:10 | 显示全部楼层
应该可以先乘个倍数,再分离。

使用特权

评论回复
bbapple| | 2017-3-22 12:15 | 显示全部楼层
貌似需要先把要进行计算的值全都强转成float类型的。

使用特权

评论回复
handleMessage| | 2017-3-22 12:17 | 显示全部楼层
或者乘10000 然后获取整数和小数。

使用特权

评论回复
zhouhuanの| | 2017-3-22 12:20 | 显示全部楼层
这个就用下数据类型转换的可以实现的。

使用特权

评论回复
happyboy226| | 2017-3-22 15:56 | 显示全部楼层
将浮点型强转成整型,再用浮点型减去整型,这样两部分都有了。

使用特权

评论回复
mohanwei| | 2017-3-22 17:04 | 显示全部楼层
搜索一下,有相应的库函数:
头文件:#include <stdio.h>

modf() 将浮点数分解为整数和小数部分,其原型为:
    double modf (double x, double* intpart);

【参数】x 为带分解双精度浮点数,intpart 为用来保存整数部分的指针。

【返回值】返回分解后的小数部分。

设返回值为 ret,则 x = intpart + ret

ret 和 intpart 拥有与 x 一样的正负号。

请看下面的代码:

纯文本复制

    #include <stdio.h>
    #include <math.h>
    int main ()
    {
        double param, fractpart, intpart;
        param = 3.14159265;
        fractpart = modf (param , &intpart);
        printf ("%f = %f + %f \n", param, intpart, fractpart);
        return 0;
    }

输出结果:
3.141593 = 3.000000 + 0.141593

将第 8 行代码的 param 的值改为 -3.14159265,则输出结果为:
-3.141593 = -3.000000 + -0.141593

使用特权

评论回复
戈卫东| | 2017-3-22 19:03 | 显示全部楼层
简单一点就这样:
flaot f, r;
int i;
......
i = f;
r = f - i;

使用特权

评论回复
pkuzhx| | 2017-3-23 09:00 | 显示全部楼层
第一反应就是类型转换得到整数部分,然后相减得到小数部分。
结果看到好几个人说乘法放大,我看的一脸懵逼,还以为自己秀逗了。再往下看发现原来还是有不少跟我想法一样的人的。

使用特权

评论回复
ayrz2010| | 2017-3-23 09:09 | 显示全部楼层
12楼正解,其他就不说了。。。。。。。。。

无语两个字。。。。。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

1426

帖子

0

粉丝