• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机C语言变量怎么一位一位的取出?

韩梅梅 2021-03-19 浏览量:819
用下面的算法,LCD1602显示一个变量,按键按一次变量++,数值在99内显示正常,超过就显示乱码。比如按了123次,取十位的时候就是123/10=12.3这个运算就不对了,不知道应该怎么写公式
unsigned long MOS_JS;
unsigned char  MOS_jishu[]={};        MOS_JS=123456;
        MOS_jishu[0]=MOS_JS/100000+0x30;//取十万位
        MOS_jishu[1]=MOS_JS/10000+0x30;//取万位
        MOS_jishu[2]=MOS_JS/1000+0x30;//取千位
        MOS_jishu[3]=MOS_JS/100+0x30;//取百位
        MOS_jishu[4]=MOS_JS/10+0x30;//取十位
        MOS_jishu[5]=MOS_JS%10+0x30;//取个位




0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • MOS_jishu[0]=MOS_JS/100000+0x30;//取十万位
            MOS_jishu[1]=MOS_JS/10000%1000+0x30;//取万位
            MOS_jishu[2]=MOS_JS/1000%100​+0x30;//取千位
            MOS_jishu[3]=MOS_JS/100%10+0x30;//取百位
            MOS_jishu[4]=MOS_JS/10%10+0x30;//取十位

            MOS_jishu[5]=MOS_JS%10+0x30;//取个位

    这样写就可以了

    • 发布于 2021-03-19
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • MOS_jishu[0]=MOS_JS/100000+0x30;//取十万位 MOS_jishu[1]=(MOS_JS%100000)/10000+0x30;//取万位 MOS_jishu[2]=(MOS_JS%10000)/1000+0x30;//取千位 MOS_jishu[3]=(MOS_JS%1000)/100+0x30;//取百位 MOS_jishu[4]=(MOS_JS%100)/10+0x30;//取十位 MOS_jishu[5]=MOS_JS%10+0x30;//取个位
    • 发布于2021-03-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 1.123/10=12.3,不会出现12.3的,因为unsigned char 类型不会带小数点的。​

    2.你需要的是单独取出某一位,所以不能单纯的只取商,而不取余,问题出现在这里的。

    3.我认为这个算法有点繁琐,用sprintf函数是个不错的办法。

    • 发布于2021-03-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 不是12.3,是12,你这里是char型的,是没有小数,小数要再进行运算取出来的
    • 发布于2021-03-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 你这里的小数,要按整数来计算,自己加个小数点
    • 发布于2021-04-07
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

单片机C语言变量怎么一位一位的取出?