Float 类型的问题(30分)

  • 主题发起人 主题发起人 R_Baggio
  • 开始时间 开始时间
R

R_Baggio

Unregistered / Unconfirmed
GUEST, unregistred user!
我用 INTERBASE 做数据库,但我用 FLOAT 插入数据时出现问题,
如插入23。4会变成23。3900XXX等,该怎么解决
 
用SQL插入
 
废话,我当然用SQL插入
 
设为 numbric 类型,可设定小数位数。参看 employee 表的设定。
 
很简单, 插入23.400000000001
 
浮点本来就不是完全精确
 
我觉得你把FLOAT 型转化成STRING插入数据库,使用时用程序给转换过来!
 
同意tianrei观点,
降低float的精度试试
 
取出数据时可用Formatfloat()格式化.
 
问题的关键是于使用Sum时的累加误差。必须要让那个字段就是两位小数。
有招吗?
 
数据类型不要用Float,因为Float是一个近似值数据类型。
将数据类型定义为NUMERIC(15,x),其中X为小数位数,这
样就不会有你所说的问题了。
 
可以使用 strtofloat(formatfloat('0.00',23.4))格式化。
 
浮点数尽量用double类型,而少用float类型

字符串-->浮点数
AnsiString Str = "11.12";
double Num = StrToFloat(Str);

浮点数-->字符串
double Num = 11.12;
AnsiString Str = FloatToStr(Num);

浮点数之间的运算可用下列方法控制:
double a1 = 11.12;
double a2 = AnsiString::FormatFloat("0.00",a1).ToDouble();
 
正常
浮点数肯定会有误差的

用Double或者Currency精度高点
 
多人接受答案了。
 
后退
顶部