200分奉上“浮点数的处理”问题(200分)

  • 主题发起人 主题发起人 tiantian3690
  • 开始时间 开始时间
T

tiantian3690

Unregistered / Unconfirmed
GUEST, unregistred user!
用delphi5操作sybase数据库(使用bde),当使用fieldbyname('字段名').AsFloat来保存numeric类型的字段时,
系统会出现错误,例如:明明要保存3.33,delphi却提示:保存3.330000000000000000001时出错!
如何解决这一个问题????
另外,我设置了enabled bcd=true后,问题依旧!

 
存入数据库前要转换一下,
浮点数尽量用double类型,而少用float类型
字符串-->浮点数
AnsiString Str = "11.12";
do
uble Num = StrToFloat(Str);
浮点数-->字符串
do
uble Num = 11.12;
AnsiString Str = FloatToStr(Num);
浮点数之间的运算可用下列方法控制:
do
uble a1 = 11.12;
do
uble a2 = AnsiString::FormatFloat("0.00",a1).ToDouble();
 
把你的Float型的数值先转化成String型,然后用.Asstring来保存。
 
你用FieldByName('字段名').AsCurrency试试。
 
tfield.AsFloat本身就是DOUBLE类型,参见DELPHI帮助。
你看一看SYBASE本身的NUMERIC设置有没有问题。
把你赋值的代码贴出来看看。
 
看一下
http://www.delphibbs.com/delphibbs/dispq.asp?lid=603606
有帮助
 
数据库中的字段为numeric ,12位长度,2位小数;
如何通过 "fieldbyname('字段名').AsFloat:=变量名(dounble类型)” 的形式存入数据库
 
enabled bcd=true,
如果是字段变量,要删除重建才生效。
 
另外SYBASE书上讲可以设置:
sp_configure "arithabort numeric_truncation", off
可以避免你所说的错误。不过我没试过。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部