C语言整数浮点数转换小问题

小白变怪兽喽 2021-02-18 11:41:05
学习过程中遇到了一个问题,首先定义了一个一位浮点数a = 1.5,我想把他扩大十倍,之后再缩小十倍
如下图,第一次a返回不了原来的值了


然后我又想到了下面的方法,不知道对不对



但问题是虽然和原来a的值大小相等,但是不是一位浮点数了呀,和原来不一样了,变成1.500000000了,怎么才能转化成和原来一样的1.5呀?(这个a是要存在单片机里的)
...全文
226 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
Isnis-fallen 2021-02-18
  • 打赏
  • 举报
回复
这个恐怕和printf的%f 格式有关,好像默认小数6位, 我看就是 1.5
突触 2021-02-18
  • 打赏
  • 举报
回复
这里涉及到浮点型与整数型何时进行转换的问题。 式子a= a_10/10; a为浮点型,a_10为整数型 为了方便讲,把式子变成 a = a_10/10 + 3; 这时就出现问题了 是该把a_10直接转为浮点型然后进行 除10 加 3 的运算,(整数除法运算不保留余数,这是与浮点型运算的区别,这个会影响到最后结果) 还是a_10/10 运算完后 转为浮点型然后加3, 或者说a_10/10 + 3 全部运算完后在转呢。 实际上编译器是根据给的数字 10 或 10.0 , 3 或3.0进行运算区分 整数与整数运算 a_10/10 ,a_10/10 + 3 还是按照整数运算方式进行 整数与浮点运算a_10/10.0 就会先把 a_10 转为浮点型在 与10.0运算。
qzjhjxj 2021-02-18
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
    float a=1.5;
    printf("first  a=%f\n",a);//原来的
    int   a_10;
    a_10 = (int)(a*10);
    printf("a_10=%d\n",a_10);
    a    = a_10/10.0;
    printf("second a=%f\n",a);//现在的

    return 0;
}

//first  a=1.500000
//a_10=15
//second a=1.500000
//请按任意键继续. . .
forever74 2021-02-18
  • 打赏
  • 举报
回复
所以你得表达清楚,你关心的到底是值还是格式?
forever74 2021-02-18
  • 打赏
  • 举报
回复
人家系统输出了5个0,你自己在正文敲了8个0,可见你自己也认为末尾多几个少几个0没关系。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧