C语言将一个数转换成小数,输出结果为零

将一个数转换成小数,输出结果为零

今天在处理数据的时候,有一个需求:
将一个整数,比如77000,单位纳秒(10^-9秒)换算成秒,然后保留10位小数。
代码:

printf( "%d", (unsigned int(item2 & 0x003fffff)/1000000000));

输出:
在这里插入图片描述
很明显就是错了,为啥全部都是零呢?
因为在转换成unsigned int 的时候,忽略了小数部分,就像:

int a = 10 / 3;
printf("%d",a);

输出的结果是3,而没有小数,同样的道理。

改正代码:

printf("%.10f   ", ((float)((unsigned int)(item2) & 0x003fffff))/1000000000);			

先将它转换成float型,这样就保留了小数部分,再进行除以10^9的操作就正确了。
输出:
在这里插入图片描述总结:转换成为小数的时候要注意,要提前转环换成float以保存小数部分,再进行后续操作。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言中,可以使用以下的方法来分离整小数部分,并将它们赋值给全局变量。 首先,我们先定义一个全局的变量,用于存储整部分的值。假设我们将它命名为int_part。 然后,我们通过以下的方式来分离整部分和小数部分: 1. 将浮点转换为字符串形式,可以使用sprintf函。 ``` char buffer[100]; // 创建一个足够大的字符组来存储字符串 float number = 10.5; // 假设我们要分离的浮点 sprintf(buffer, "%f", number); // 使用sprintf将浮点转换为字符串 ``` 2. 使用strchr函来查找小数点在字符串中的位置,并将其替换为字符串结束符号'\0'。 ``` char *decimal_point = strchr(buffer, '.'); // 在字符串中查找小数点 if (decimal_point != NULL) { *decimal_point = '\0'; // 将小数点替换为字符串结束符号 } ``` 3. 使用sscanf函来将字符串转换回浮点,并分别将整部分和小数部分赋值给全局变量。 ``` sscanf(buffer, "%d", &int_part); // 将字符串转换为整,并赋值给全局变量int_part ``` 4. 如果需要,我们还可以将剩余的字符串部分转换为浮点,并赋值给另一个全局变量,用于存储小数部分的值。 ``` float decimal_part; // 创建一个用于存储小数部分的全局变量 sscanf(decimal_point + 1, "%f", &decimal_part); // 将小数点后的字符串转换为浮点,并赋值给全局变量decimal_part ``` 通过以上的步骤,我们就可以将浮点的整部分和小数部分分别赋值给全局变量int_part和decimal_part。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值