1432744这个贴子分加错了,现在补上,能给我答案的话,两个贴子的分都给你!怎么让123456789.444445 * 45 等于 5

  • 主题发起人 主题发起人 shangshang
  • 开始时间 开始时间
S

shangshang

Unregistered / Unconfirmed
GUEST, unregistred user!
1432744这个贴子分加错了,现在补上,能给我答案的话,两个贴子的分都给你!怎么让123456789.444445 * 45 等于 5555555525.000025 啊?我用Showmessage(FloatToStr(123456789.444445*45)) 老是等于5555555525 (300分)<br />我从oracle8.16中读数据然后计算,所需计算的字段数据类型都是numeric(16,6), 生成的字段对象类型默认是
TBCBField, 我已经改为TFloatField, 可以存储小数点以后六位了,但是计算结果总是不对。总是最后要错一点,
就像标题中说的,就少了最后一位,这个问题是不允许发生的, 谁能告诉我解决办法啊?
 
Showmessage(Format('%17.6f',[123456789.444445*45]))
 
可能是showmessage把点号算进去了,用其他方法吧.
比如直接显示在记录中.
 
我真是急昏头了,呵呵,居然没想起来试试这个。唉。
问题算解决了,
jsxjd, 你能告诉我原因吗?或者相关的一些知识也行,
还有,有没有办法让delphi自动生成的字段对象的类型为TFloatField?
上面两问号若能回答,同样每问300分。
发400分先给jsxjd。
有兴趣回答上面两个问号的问题的富翁,请EMAILTO: ypv8@163.com or qq:28873222
zai在线等候指教。
 
跟踪一下变量,如果在显示前,数据是正确的,你就根本不用担心了,那说明问题出在
showmessage中,对于你的数据保存到数据库中是没有影响的
 
跟踪差的更远,用asfloat访问,跟踪时只有 123456789.44 后面的全部都没有了
 
floatToStr 只有15个有效数字!
你应该用 FloatTostrF

Showmessage(FloatToStrF(123456789.444445*45,ffFixed,16,6));


FloatToStr converts the floating-point value given by Value to its string representation. The conversion uses general number format with 15 significant digits.

For greater control over the formatting of the string, use the FloatToStrF function.


第二个问题好象不行!
 

Similar threads

回复
0
查看
813
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部