如何能把计算钱的实型数据更精确? ( 积分: 18 )

  • 主题发起人 主题发起人 yjwnnit
  • 开始时间 开始时间
Y

yjwnnit

Unregistered / Unconfirmed
GUEST, unregistred user!
REAL 类型, 存放钱(精确到分) 在运算过程中经过了FLOATTOSTR()
STRTOFLOAT() 的各函数一次的转换, 到合计时出现了万分之一的误差, 当然1万元
误差1元,这是可以接受的, 但是从技术角度来说, DELPHI 就没办法达到100%精确吗?
在C#中除了FLOAT类型还有用于金钱运算的DECMIL类型.DELPHI有什么好办法?
 
REAL 类型, 存放钱(精确到分) 在运算过程中经过了FLOATTOSTR()
STRTOFLOAT() 的各函数一次的转换, 到合计时出现了万分之一的误差, 当然1万元
误差1元,这是可以接受的, 但是从技术角度来说, DELPHI 就没办法达到100%精确吗?
在C#中除了FLOAT类型还有用于金钱运算的DECMIL类型.DELPHI有什么好办法?
 
怎麼可能會出現萬分之一的誤差?是你自己四捨五入了吧。你可以不要四捨五入呀。
 
我并没用到有四舍五入, 只用过 FLOATTOSTR( ) STRTOFLOAT() 两种与REAL类型的函数.
我运算的总金额是几百万元, 误差就超过几百块了.
 
自己写一个float to str 的函数的
 
来自:lldhz, 时间:2005-2-24 11:55:39, ID:2995790
自己写一个float to str 的函数的
----------------
上边的朋友对问题真的是说了等于没说! 大家没有好办法吗?
 
如果你只是簡單的floattostr或strtofloat是不會有這種問題的,你這樣說搞不清你是怎麼計算的。把代碼貼出來看看吧。
 
不要用real类型
double看看
如果还不满足要求,看看该使用下面哪种类型:
Fundamental real types
Type Range Significant digits Size in bytes
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8
 
来自:yjwnnit, 时间:2005-2-24 11:57:56, ID:2995796
来自:lldhz, 时间:2005-2-24 11:55:39, ID:2995790
自己写一个float to str 的函数的
----------------
上边的朋友对问题真的是说了等于没说! 大家没有好办法吗?
呵呵,真的什么都没有说吗?
你的问题是用floattostr strtofloat有数据丢失(虽然我没有遇到过)
自己写个两个函数
一个float按位转成str(按位:10进制数有多少位,字符串就有多长1000-》“1000” 1-》“1”str最大长度为31应该够用吧)
一个把str还原成float
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
680
import
I
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部