开方溢出???

qfzcx 2007-01-21 03:44:15
如下:
x:extended;
x:=sqrt(50000*50000);
此时编译提示如下错误,[Error] SK.PAS(984): Overflow in conversion or arithmetic operation
我原来的计算数值有可能比50000*50000要大,我改变了几次x的数据类型都有错误怎么办??
难道开平方还对数值有限制? 如果在程序中是变量在运算过程中提示的是:
Invalid floating point operation.
怎么解决啊???
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dBASEIII 2007-01-21
  • 打赏
  • 举报
回复
var
X : Extended;
A,B : Double;
begin
A := 99999999;
B := 99999999;
X := sqrt(A * A + B * B);
edit1.text := FloatToStr(X);// Result : 141421354.823096
end;
dBASEIII 2007-01-21
  • 打赏
  • 举报
回复
其实你完全可以自己试一下:

var
X : Extended;
A,B : Double;
begin
A := 99999999;
B := 99999999;
X := sqrt(A * B);
edit1.text := FloatToStr(X);
end;
qfzcx 2007-01-21
  • 打赏
  • 举报
回复
例如当是变量的时候怎么告诉编译器呢?
a,b:我声明过几种类型都有错误.
x:=sqrt(a*a+b*b);
dBASEIII 2007-01-21
  • 打赏
  • 举报
回复
需要显式地告诉编译器,你的立即数是实型的,比如:

var
X : Extended;
begin
X := sqrt(99999999.0 * 99999999.0);//还可以更大,自己试一下
end;

如果用99999999,那么编译器可能默认为一个integer立即数,计算完后,再转为实型

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧