头一次遇到这么奇怪的事,百思不得其解! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061218134924241.html
用两个变量存double型的值,相乘后的值保留三位小数,问题是:用变量的时候得到的值不能四舍五入,而用数的时候就可以,例子如下,很奇怪,大家可以试一下:  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var   xs,yg,z:double;  
  begin  
            xs:=0.022;  
            yg:=1.25;  
            z:=round(xs*yg*power(10,3))/power(10,3);  
            showmessage(floattostr(z));  
  end;    
   
  这个得到是0.027  
   
  \\\\\\\\\\\\\\\\\\\\\\\\\  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var   z:double;  
  begin  
            z:=round(1.25*0.022*power(10,3))/power(10,3);  
            showmessage(floattostr(z));  
  end;    
   
  这个得到是0.028

哪位老大帮帮我?

这个问题可能是Round浮点数计算精度问题,估计用常数时自动分配的变量精度比double高的缘故。可是搂住使用的变量都是double,为什么要在运算中间作个四舍五入呢,去掉Round,2个运算表达式结果是一样的0.0275

可是我需要保留三位小数呀大侠,咋办?

这个是由于double的精度引起的,改用extended就可以了

相关文章:

  • 2022-01-19
  • 2022-12-23
  • 2022-02-18
  • 2022-12-23
  • 2022-01-03
  • 2021-09-27
  • 2022-01-31
  • 2021-09-23
猜你喜欢
  • 2022-01-02
  • 2021-04-11
  • 2021-10-31
  • 2021-09-18
  • 2021-11-16
  • 2021-06-11
  • 2021-11-27
相关资源
相似解决方案