怎么让123456789.444445 * 45 等于 5555555525.000025 啊?我用Showmessage(FloatT

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

shangshang

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么让123456789.444445 * 45 等于 5555555525.000025 啊?我用Showmessage(FloatToStr(123456789.444445*45)) 老是等于5555555525.00002 啊,d6,w2kserver. 有急用,300分赠上!!! (100分)<br />我从oracle8.16中读数据然后计算,所需计算的字段数据类型都是numeric(16,6), 生成的字段对象类型默认是
TBCBField, 我已经改为TFloatField, 可以存储小数点以后六位了,但是计算结果总是不对。总是最后要错一点,
就像标题中说的,就少了最后一位,这个问题是不允许发生的, 谁能告诉我解决办法啊?
 
procedure TForm1.Button1Click(Sender: TObject);
var
f:real;
begin
f:=123456789.444445*45;
Showmessage(Format('%17.6f',[f]))
end;
 
我真是急昏头了,呵呵,居然没想起来试试这个。唉。
问题算解决了,
jsxjd, 你能告诉我原因吗?或者相关的一些知识也行,
还有,有没有办法让delphi自动生成的字段对象的类型为TFloatField?
上面两问号若能回答,同样每问300分。
发400分先给jsxjd。
有兴趣回答上面两个问号的问题的富翁,请EMAILTO: ypv8@163.com or qq:28873222
zai在线等候指教。
 
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.


第二个问题好象不行!
 
顶部