读书人

DELPHI 追踪到的奇特结果 很奇特. 大神

发布时间: 2013-09-08 15:21:21 作者: rapoo

DELPHI 跟踪到的奇特结果 很奇特.... 大神们 帮忙


[解决办法]
var rat ,alot :Extended ;
len_c :integer ;

alot :=606.795;
len_c :=100;
rat := alot * len_c + 0.5;//这里rat = 606.795 * 100 + 0.5 刚好等于60680啊
rat := Trunc(rat);//这里Trunc后变为了60679应该和rat的变量类型为Extended有关,你改为Real试下。
rat := rat / len_c;
[解决办法]
刚测试了下不会出现你说的那种情况啊,是不是你编译器里面勾选了什么。。。。
[解决办法]
real和double一样
http://www.cnblogs.com/del/archive/2007/12/04/982167.htmlDELPHI 追踪到的奇特结果 很奇特. 大神们 帮忙
[解决办法]
对照下real的范围进行比较下
[解决办法]
我觉得就是精度的问题
用real来表示606.795和用Extended来表示606.795在内存中的结果有可能是不一样的,比如
real的结果可能是606.794999999,而Extended则可能是606.795000000000000000000000000000001


累积的结果导致LZ的上述现象


另外,你可以试试用
606.785来测试一下你的程序


或许你找一下资料看一下小数,浮点数在计算机中是如何存储的能够加深一些了解
可以网上查一下“浮点数二进制表示”应当可以解释一二。

读书人网 >.NET

热点推荐