野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15324|回复: 19

数值精度转换问题

[复制链接]
发表于 2015-11-29 19:56:33 | 显示全部楼层 |阅读模式
我用的开发板是STM32F103ZET6,编程环境是Keil,,,这里面计算公式精度转换和C语言不一样吗?????

我想计算下面的值:uint32_t   t ,l;
                           l=56500;
                           t=l/2000000.0f;         为什么出来的结果总是0?????????
  我想得出的是小数,,,,该怎么办啊????                    用强制转换也不行!!!!!
回复

使用道具 举报

发表于 2015-11-30 08:34:47 | 显示全部楼层
t不是给你定义为整数了吗,怎么出得来浮点数啊???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-30 09:28:59 | 显示全部楼层
亽亼 发表于 2015-11-30 08:34
t不是给你定义为整数了吗,怎么出得来浮点数啊???

可是我改成  float t.l;   结果也是一样的啊?  ???????

你可知道怎么修改告诉我下,谢谢啊!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-30 10:16:05 | 显示全部楼层
亽亼 发表于 2015-11-30 08:34
t不是给你定义为整数了吗,怎么出得来浮点数啊???

我看了下数据类型定义,没看到float 和 double 定义,全部都是整形      那是否说明这个编程环境中它们是不起作用的?????????????????
回复 支持 反对

使用道具 举报

发表于 2015-11-30 10:24:01 | 显示全部楼层
float fl;
uint32_t ut;

  ut=56500;
  fl=(float)ut;
  fl=fl/2000000;
  printf("fl:%f\n",fl);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-30 10:49:44 | 显示全部楼层
亽亼 发表于 2015-11-30 10:24
float fl;
uint32_t ut;

还是不行, fl=(float)ut;这句转换后的f1显示还是整数,其结果还说0   。

我查看了数据定义,关键是没看到float 和 double 是不是这个的影响啊????????
回复 支持 反对

使用道具 举报

发表于 2015-11-30 11:30:39 | 显示全部楼层
float fl;
uint32_t ut;

  ut=56500;
  fl=(float)ut;
  fl=fl/2000000;
  printf("fl:%f\n",fl);
我专门在F1的串口例程测试可以的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-30 14:36:42 | 显示全部楼层
亽亼 发表于 2015-11-30 11:30
float fl;
uint32_t ut;

我知道了我显示的和你不一样

我是用  void LCD_DisNum(uint16_t x, uint16_t y, uint32_t num, uint16_t color) 在触摸屏上显示的,这里面包含的都是整数!!!!!!


有没有办法在触摸屏上显示浮点数啊??????????????
回复 支持 反对

使用道具 举报

发表于 2015-11-30 14:54:40 | 显示全部楼层
使用spring函数把浮点数转成字符串再显示
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-30 15:15:31 | 显示全部楼层
亽亼 发表于 2015-11-30 14:54
使用spring函数把浮点数转成字符串再显示

库里面有这函数吗???     能告诉我具体在哪里面吗?????

回复 支持 反对

使用道具 举报

发表于 2015-11-30 15:27:08 | 显示全部楼层
跟printf函数一样是个标准函数
定义在stdio.h
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-30 15:42:14 | 显示全部楼层
亽亼 发表于 2015-11-30 14:54
使用spring函数把浮点数转成字符串再显示

显示字符串如下   
void LCD_DispStr(uint16_t x, uint16_t y, uint8_t *pstr, uint16_t color)

这也是用整数显示的啊??????
回复 支持 反对

使用道具 举报

发表于 2015-11-30 15:48:41 | 显示全部楼层
参考英文显示例程
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-30 19:08:11 | 显示全部楼层
亽亼 发表于 2015-11-30 15:48
参考英文显示例程

看了,可是我查了下spring函数,不太会用,这基本是针对java的,能不能举个简单的例子我看看啊!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2015-12-1 08:33:07 | 显示全部楼层
sprintf和printf用法差不多,
char tempstr[20];
float fl;
uint32_t ut;

  ut=56500;
  fl=(float)ut;
  fl=fl/2000000;
sprintf(tempstr,"%f",fl);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-1 09:58:24 | 显示全部楼层
亽亼 发表于 2015-12-1 08:33
sprintf和printf用法差不多,
char tempstr[20];
float fl;

太感谢你了,现在有结果了,你可真厉害啊!!!!!不愧为版主,赞!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-1 18:54:49 | 显示全部楼层
亽亼 发表于 2015-12-1 08:33
sprintf和printf用法差不多,
char tempstr[20];
float fl;

大神,再问你下,为什么我加了这转换后,触摸屏上的按键就不动了啊??????

这句话和触摸屏感觉没有关系啊???????
回复 支持 反对

使用道具 举报

发表于 2015-12-1 19:03:54 | 显示全部楼层
Vicky 发表于 2015-12-1 18:54
大神,再问你下,为什么我加了这转换后,触摸屏上的按键就不动了啊??????

这句话和触摸屏感觉没 ...

看看你的句子是不是太长了,超出数组长度,溢出就死机了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-1 19:36:42 | 显示全部楼层
flyleaf 发表于 2015-12-1 19:03
看看你的句子是不是太长了,超出数组长度,溢出就死机了

大神,我搞定了,网上查了说可能超出范围了,,,,,还是很谢谢你啊 !!!!!!!!人真好!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-6 12:06:10 | 显示全部楼层
flyleaf 发表于 2015-12-1 19:03
看看你的句子是不是太长了,超出数组长度,溢出就死机了

大神打扰了,我再问你个问题啊!

我在我的程序上增加个温湿度传感器测温湿度,我看那引脚接的是B10,可以改成其他引脚吗?????????????试了没反应就问下

我增加这个程序后,触摸屏上面的之前显示的内容显示不了,,,按键也不行,,???????????、、之前用了A5\A2\A0三个引脚,

回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 09:31 , Processed in 0.039176 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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