متشکر از پاسختون
وقتی دارید دو عدد اینت رو در هم ضرب می کنید، جواب شما نباید بالاتر از رنج بزرگترین تایپ محاسبات جاری باشه، دلفی فرض می گیره جوابتون هم اینته و اینی می شه که دیدید.
این جواب منطقی نیست. اگر جواب واقعا همینی باشه که شما فرمودید ، همیشه (جهت احتیاط) در عملیات های شامل ضرب ، باید عبارت را در 1.0 ضرب کنیم ، چون ممکنه که عدد از رنج integer خارج بشه. یعنی دلفی اینقدر هوشمند نیست که مسئله به این سادگی را تشخیص بده. به نظرم مهم اینه که حاصلضرب از رنج معتبر مقصد (real) خارج نشه .
سوال دیگه اینکه اگر Temp به جای real از نوع int64 باشه باید چگونه عمل کرد ؟
var Temp:Int64;
Num1,Num2:integer;
begin
Num1:=1000;
Num2:=2795204;
Temp:=Num1*Num2;
ShowMessage('Temp:'+FloatToStr(Temp));