OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5965|回复: 6

C语言中如何将一个数转化为小数部分

[复制链接]

54

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1044
金钱
1044
注册时间
2022-4-20
在线时间
373 小时
发表于 2022-6-27 16:33:02 | 显示全部楼层 |阅读模式
5金钱
double a=0;
u8 b=150,c=125;
我想达到的效果是通过一种转换方式,将a赋值成b.c,也就是a=150.125,请问如何以最短的代码做到。

最佳答案

查看完整内容[请看2#楼]

先试一下这样行不行: a=(double)b+(double)c/1000; 不行就写两句: a=c;a=a/1000+b; 但是建议尽量不要用double,而是用整数代替小数,只在显示时多加个小数点,你心里知道它是小数就行,比如用整数123表示1.23,整数的运算比小数运算要快些。
又菜又爱指点
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-6-27 16:33:03 | 显示全部楼层
先试一下这样行不行:
a=(double)b+(double)c/1000;
不行就写两句:
a=c;a=a/1000+b;
但是建议尽量不要用double,而是用整数代替小数,只在显示时多加个小数点,你心里知道它是小数就行,比如用整数123表示1.23,整数的运算比小数运算要快些。
专治疑难杂症
回复

使用道具 举报

70

主题

6758

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12991
金钱
12991
注册时间
2012-11-26
在线时间
3789 小时
发表于 2022-6-27 18:56:54 | 显示全部楼层
精度不一定能做到
学无止境
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2022-6-27 21:02:37 | 显示全部楼层
a=((double)(b*1000+c))/1000,注意是先转换为double型,再除以1000
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2022-6-27
在线时间
1 小时
发表于 2022-6-27 21:19:43 | 显示全部楼层
111111
回复

使用道具 举报

54

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1044
金钱
1044
注册时间
2022-4-20
在线时间
373 小时
 楼主| 发表于 2022-6-28 09:40:08 | 显示全部楼层
LcwSwust 发表于 2022-6-27 16:33
先试一下这样行不行:
a=(double)b+(double)c/1000;
不行就写两句:

谢谢,我竟然忘记强制转换了
又菜又爱指点
回复

使用道具 举报

54

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1044
金钱
1044
注册时间
2022-4-20
在线时间
373 小时
 楼主| 发表于 2022-6-28 09:55:29 | 显示全部楼层
c2007s 发表于 2022-6-27 21:02
a=((double)(b*1000+c))/1000,注意是先转换为double型,再除以1000

谢谢解答:
又菜又爱指点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 19:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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