一个奇怪的StrToFloat()函数

本文通过实例演示了在Delphi中使用Single与Extended类型存储浮点数时的精度差异,指出当需要高精度运算时应选择Extended而非Single。

一个字符串的值为'999950.64',而显示出来的只有'999950.63',开始还以为是用引用传递参数使用错误,经跟踪发现,是因为定义的一个变量用了不当的类型引起的,也是因为对Single和Extended没有好好认识他们的不同,

 

var

  s:Single;

  e:Extended;

begin

  Edit1.Text:='0.64';

  s:=StrToFloat(Edit1.Text);

  e:=StrToFloat(Edit1.Text);

end;

 

这时s,和e的值是不一样的,s是值为0.6399999,e的值为0.64;而如果Edit1.Text:='999950.64';则s为999950.625,e为999950.64,因为Single的精底为7-8位,所在在存储'999950.64'时,只能存'999950.6'后面的是有误差的,所以要是要求精确的小数时,最好使用Extended.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值