首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

开方溢出?解决方案

2012-03-17 
开方溢出???如下:x:extendedx:sqrt(50000*50000)此时编译提示如下错误,[Error]SK.PAS(984):Overflowinc

开方溢出???
如下:  
  x:extended;
  x:=sqrt(50000*50000);
此时编译提示如下错误,[Error]   SK.PAS(984):   Overflow   in   conversion   or   arithmetic   operation
我原来的计算数值有可能比50000*50000要大,我改变了几次x的数据类型都有错误怎么办??
难道开平方还对数值有限制?   如果在程序中是变量在运算过程中提示的是:
Invalid   floating   point   operation.  
怎么解决啊???

[解决办法]
需要显式地告诉编译器,你的立即数是实型的,比如:

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

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

热点排行