开方溢出???
如下:
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立即数,计算完后,再转为实型