STM32F4浮点运算出错

2019-07-20 05:12发布

单片机型号:STM32F415VGT6
我在程序中定义了一个u32类型的变量 a,然后通过串口给 a 一个值,然后在单片机中计算a/225000.0得到一个浮点数,但是这个浮点数比实际值大了1.8,也就是当 a 的值为12640500时,计算器算出来应该是56.18,但是单片机算出来是57.97..... 。这是为什么?我用 a 除以200000.0,218180.0,220000.0都没出现这样的情况,值都是比较准确的;只要除以225000.0就会出错。于是我打算在相除后直接减去多余的1.8,像这样(a/225000.0) - 1.8;但是结果还是57.97..... ,也就是减去1.8没起作用,根本就没做这个运算。实在是搞不懂了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
Electronic
1楼-- · 2019-07-21 01:30
 精彩回答 2  元偷偷看……
NickWu
2楼-- · 2019-07-21 05:01
午夜狼嚎 发表于 2018-11-2 18:02
a的值是正确的,就是如下程序的freq_val。
if((((freq_val%200000) > 10000)&&((freq_val%200000) < 400 ...

Hello

//=====================//
u32 a;
a = 12640500;
a = (a/225000.0)*100;
printf("%d",a);
//=====================//

我用上方編碼去算,出來是5816喔,
所以我猜可能是你的"div"變數,但因你沒貼這個變數的定義,就留給你當參考方向了。
午夜狼嚎
3楼-- · 2019-07-21 10:27
 精彩回答 2  元偷偷看……
午夜狼嚎
4楼-- · 2019-07-21 11:12
NickWu 发表于 2018-11-7 17:01
Hello

//=====================//

好的,谢谢

一周热门 更多>