procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
  temp: Double;
begin
  Caption := '';
  Temp := 0.0;  
  for i := 1 to 30000000 do  
    Temp := Temp + 0.10;
  Caption := Format('Result = %f',[Temp]);
end;
结果为2097152.00 显然误差大得太离谱了。用Double正好。我都不敢用Single了。

解决方案 »

  1.   

    Curreny是定点数据类型,该类型在货币计算时使舍入误差最小。Currency类型以含格式的64位整数存储,其中隐含地包括了表示小数部分的4位最少有效数字。在赋值语句和表达式中将该类型与其他实数类型混合时,Currency类型的值会自动被除以或乘以10000。(大多数货币数字都只含有2位小数,Currency类型总是保留4位小数,这就足以使货币计算的误差降到最小。)
    我一般用它
    呵呵
      

  2.   

    ooooSingle 是什么。。从来没用过的说
      

  3.   

    single 单精度 4字节
    Double 双精度 8字节currency慢啊。