野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8564|回复: 4

数值转换不对

[复制链接]
发表于 2016-3-7 15:26:10 | 显示全部楼层 |阅读模式
已知      L=4294950236      

我通过下面的计算
        t1=(double)L;
            t=t1/2000000.0;
或者直接      t=L/2000000.0;
得到   t的浮点数,为什么不对啊??????那该如何得到啊???????
回复

使用道具 举报

发表于 2016-3-7 16:13:00 | 显示全部楼层
你的t1、t分别是什么格式?转换的错误结果是什么
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-7 16:31:40 | 显示全部楼层
flyleaf 发表于 2016-3-7 16:13
你的t1、t分别是什么格式?转换的错误结果是什么

double  t1 ,t;
其实L前面5位是不变的,后面几位是变化的,,,,,
得到的t数值是不固定的,幅度变化好大,按理讲t的值钱几位应该也是不变的才对!!!!!
回复 支持 反对

使用道具 举报

发表于 2016-3-7 17:21:29 | 显示全部楼层
Vicky 发表于 2016-3-7 16:31
double  t1 ,t;
其实L前面5位是不变的,后面几位是变化的,,,,,
得到的t数值是不固定的,幅度变化 ...

调试的时候把L ,t1, t都打印出来看看,感觉是你L的值本身就不对吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-7 20:40:22 | 显示全部楼层
flyleaf 发表于 2016-3-7 17:21
调试的时候把L ,t1, t都打印出来看看,感觉是你L的值本身就不对吧

打印出来的结果也好奇怪,,电机一直在转动,L是电机频率的差值


就是这公式得到的:              l=TIM3Capture-TIM2Capture;      printf("l的值是:o%f \r\n" ,l);
                t1=(double)l;       printf("t1的值是:%f \r\n" ,t1);
            t=l/2000000.0;       printf("t的值是: %f \r\n" ,t);

打印结果如下:
l值是:1.224000

t1值是:4294964257.000000

t值是: 2147.482128

l值是:1.224000

t1值是:1224.000000

t值是: 0.000612

l值是:1.224000

t1值是:1224.000000

t值是: 0.000612

l值是:1.224000

t1值是:1224.000000

t值是: 0.000612

l值是:1.224000

t1值是:970.000000

t值是: 0.000485

l值是:1.224000

t1值是:970.000000

t值是: 0.000485

l值是:1.224000

t1值是:970.000000

t值是: 0.000485

l值是:1.224000




l的值没变啊,为什么t1和t的值变化那么奇怪啊???????
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 15:49 , Processed in 0.029223 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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