为什么Extended的精度于Double一样?

wanggongqin 2003-08-22 10:55:34
我在程序中把所有的Double类型换成了Extended,希望提高数据精度,但是为什么不起作用?
...全文
321 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanggongqin 2003-08-23
  • 打赏
  • 举报
回复
确实是转换为字符串时出的问题,可是我不知道FloatToStrF怎么用?用FloatToStrF怎么才能保持Extended的最高精度?
wanggongqin 2003-08-22
  • 打赏
  • 举报
回复
firstshine,我做了一个计算器程序,数据原来用Double类型,达不到像windows计算器一样的精度,于是我就把程序中的所有Double替换成了Extended,可是再运行后,精度并没有变高,这是怎么回事?
rustle 2003-08-22
  • 打赏
  • 举报
回复
最后结果截位的时候转换成string进行

自己写程序实现
firstshine 2003-08-22
  • 打赏
  • 举报
回复
Double: 5.0*10^-324...1.7*10^308
extended: 3.6*10^-4951...1.1*10^4932

我想,你的程序的数据精度不可能连Double都不能够满足吧。
对于一个给定的数,它既然能够用double表示,你把它转换成为extended那还不是一样的。
除非它的精度高得不能用double表示,你用extended表示才有意义。
hiflower 2003-08-22
  • 打赏
  • 举报
回复
var dtemp: Double;
etemp: Extended;
begin
dtemp:=1/3; // dtemp结果为:0.333333333333333
etemp:=1/3; // etemp结果为什么还是:0.333333333333333
if etemp>dtemp then
ShowMessage('Extended>Double');//说明 Extended 确实是精度高一些

end;
应该是你转换成字符串时产生的问题。
FloatToStr converts the floating-point value given by Value to its string representation. The conversion uses general number format with 15 significant digits.

FloatToStrF converts the floating-point value given by Value to its string representation.
The Value parameter is the value to convert.
The Precision parameter specifies the precision of the given value. It should be ☆7☆ or less for values of type Single, ★15★ or less for values of type Double, and ★18★ or less for values of type Extended.
Cipherliu 2003-08-22
  • 打赏
  • 举报
回复
double=extended
wanggongqin 2003-08-22
  • 打赏
  • 举报
回复
DWGZ老兄,你理解错了!
我举个例子:
var dtemp: Double;
etemp: Extended;
begin
dtemp:=1/3; // dtemp结果为:0.333333333333333
etemp:=1/3; // etemp结果为什么还是:0.333333333333333
end;
DWGZ 2003-08-22
  • 打赏
  • 举报
回复
因为你的数据达不到那个精度, 比方说
var
I: Integer;
I := 1 + 1;
var
D: Double
D := 1 + 1;;
从结果看区别是不大的

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧