找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 150|回复: 5
打印 上一主题 下一主题
收起左侧

C语言问题

[复制链接]
跳转到指定楼层
楼主
ID:709761 发表于 2025-4-29 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言如何实现   整数位是一个8位整数 36,小数位是一个8位整数 250,如何合并成float型 36.25。 假如 ,小数位是一个8位整数 25,如何合并成float型 36.25。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1034262 发表于 2025-4-29 17:29 | 只看该作者
浮点:
u8 a = 36;
u8 b = 250;
float f;
f = (float)a + (flaot)b/1000;

定点,放大1000倍:
u8 a = 36;
u8 b = 250;
u32 f;
f = (u32)a *1000 + b;   //f值为36250,由于放大了1000倍,所以实际为36.250
回复

使用道具 举报

板凳
ID:879809 发表于 2025-4-29 22:33 | 只看该作者
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. /* run this program using the console pauser or add your own getch, system("pause") or input loop */

  4. int main(int argc, char *argv[]) {
  5.         volatile float f;
  6.     int i=36,j=25;
  7.     char ch[10];
  8.     sprintf(ch,"%d.%d",i,j);
  9.     f=atof(ch);
  10.         printf("\r\nk=%f",f);
  11.         return 0;
  12. }
复制代码
回复

使用道具 举报

地板
ID:879809 发表于 2025-4-29 22:38 | 只看该作者
coody_sz 发表于 2025-4-29 17:29
浮点:
u8 a = 36;
u8 b = 250;

我觉得吧,250这个写法不具备通用性,也就是说无法表达000~999的任意组合,所以毫无讨论价值。

后面的25的写法可以表达00~99,可以讨论一下。
回复

使用道具 举报

5#
ID:709761 发表于 2025-4-30 09:02 | 只看该作者
coody_sz 发表于 2025-4-29 17:29
浮点:
u8 a = 36;
u8 b = 250;

b=25 除1000 0.025+36 就不是36.25了
回复

使用道具 举报

6#
ID:1109793 发表于 2025-4-30 10:45 | 只看该作者

那个sprintf可能比较占空间
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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