莫九玉 发表于 2018-8-31 15:17:56

stm8l151 我想运行开根号,但是报错,求教

本帖最后由 莫九玉 于 2018-8-31 15:20 编辑

我使用stm8l151.。
我想运行sqrt(4000*4000);但是编译提示“Warning: integer operation result is out of range ” 。说超出了范围,有什么办法可以解决呢?我想开根号的数很大。

我使用stm8l151执行sqrt(4*4);执行没问题。
我使用stm32l476执行sqrt(4000*4000);没问题。




wenyangzeng 发表于 2018-8-31 15:40:28

本帖最后由 wenyangzeng 于 2018-8-31 16:09 编辑

1、不应该用实数进行运算;
2、由于STM8属8位机,至少分2步计算,而且开方不能用整数运算

#include<math.h>
float x, result;
x=4000*4000;
result=sqrt(x);
3、4000*4000=16000000(0xf42400)STM8受不了!!

wudianjun2001 发表于 2018-8-31 15:30:26

看看sqrt函数的定义,输入参数是不是有限制

莫九玉 发表于 2018-8-31 16:42:07

wenyangzeng 发表于 2018-8-31 15:40
1、不应该用实数进行运算;
2、由于STM8属8位机,至少分2步计算,而且开方不能用整数运算



谢谢,已经修改,我把他们整体除以100,然后就可以了
页: [1]
查看完整版本: stm8l151 我想运行开根号,但是报错,求教