[应用相关] 想得到浮点数的整数和小数部分

[复制链接]
1470|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

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