本人维护了一个Delphi+Oracle开发的系统,近日用户反映数据小数位有问题。具体表结构及插入语句如下:
有表dd_eis_cs_ah_data,结构如下:字段名 类型 是否为空
CS_NB NUMBER N
CS_DATE DATE N
CS_VALUE FLOAT Y
CS_GF FLOAT Y
CS_YH FLOAT Y
CS_DG FLOAT Y
CS_TYPE NUMBER Y
CS_MANUAL NUMBER Y Delphi程序中有一段如下代码:
sql := 'insert into pmis.dd_eis_cs_ah_data(cs_nb,cs_date,cs_value,cs_gf,cs_yh,cs_dg,cs_type) '+
'values(%d,to_date(''%s'',''yyyy-mm-dd''),%f,%f,%f,%f,%d)';
sql := Format(sql,[ds_Eis.FieldByName('cs_nb').AsInteger,
DateToStr(ds_Eis.FieldByName('cs_date').AsDateTime),
ds_Eis.FieldByName('cs_value').AsFloat,
ds_Eis.FieldByName('cs_gf').AsFloat,
ds_Eis.FieldByName('cs_yh').AsFloat,
ds_Eis.FieldByName('cs_dg').AsFloat,
ds_Eis.FieldByName('cs_type').AsInteger
]
);
我show了一下, ds_Eis.FieldByName('cs_value').AsFloat=23.456,
ds_Eis.FieldByName('cs_gf').AsFloat=13.001,
ds_Eis.FieldByName('cs_yh').AsFloat=456.456666,
ds_Eis.FieldByName('cs_dg').AsFloat=23.1,
ds_Eis.FieldByName('cs_type').AsInteger=0
这些参数的值小数位>3,但是show sql语句时,显示如下:
insert into pmis.dd_eis_cs_ah_data(cs_nb,cs_date,cs_value,cs_gf,cs_yh,cs_dg,cs_type)
values(23,to_date('2005-03-01','yyyy-mm-dd'),23.46,13.00,456.47,23.10,0)
这是为什么啊,小数位都成2位了。数据库中也看不出来精度设置啊!
我在怀疑%f是否有问题啊
有表dd_eis_cs_ah_data,结构如下:字段名 类型 是否为空
CS_NB NUMBER N
CS_DATE DATE N
CS_VALUE FLOAT Y
CS_GF FLOAT Y
CS_YH FLOAT Y
CS_DG FLOAT Y
CS_TYPE NUMBER Y
CS_MANUAL NUMBER Y Delphi程序中有一段如下代码:
sql := 'insert into pmis.dd_eis_cs_ah_data(cs_nb,cs_date,cs_value,cs_gf,cs_yh,cs_dg,cs_type) '+
'values(%d,to_date(''%s'',''yyyy-mm-dd''),%f,%f,%f,%f,%d)';
sql := Format(sql,[ds_Eis.FieldByName('cs_nb').AsInteger,
DateToStr(ds_Eis.FieldByName('cs_date').AsDateTime),
ds_Eis.FieldByName('cs_value').AsFloat,
ds_Eis.FieldByName('cs_gf').AsFloat,
ds_Eis.FieldByName('cs_yh').AsFloat,
ds_Eis.FieldByName('cs_dg').AsFloat,
ds_Eis.FieldByName('cs_type').AsInteger
]
);
我show了一下, ds_Eis.FieldByName('cs_value').AsFloat=23.456,
ds_Eis.FieldByName('cs_gf').AsFloat=13.001,
ds_Eis.FieldByName('cs_yh').AsFloat=456.456666,
ds_Eis.FieldByName('cs_dg').AsFloat=23.1,
ds_Eis.FieldByName('cs_type').AsInteger=0
这些参数的值小数位>3,但是show sql语句时,显示如下:
insert into pmis.dd_eis_cs_ah_data(cs_nb,cs_date,cs_value,cs_gf,cs_yh,cs_dg,cs_type)
values(23,to_date('2005-03-01','yyyy-mm-dd'),23.46,13.00,456.47,23.10,0)
这是为什么啊,小数位都成2位了。数据库中也看不出来精度设置啊!
我在怀疑%f是否有问题啊
解决方案 »
- TcomponentList中组件的调用问题?
- sql server中导入dbf数据表的问题?
- 问:SQL Server 中有没有刷新整个数据库的存储过程
- 如何截获DOS下的Edit编辑器的保存文件及另存文件的动作...解决即结贴...
- 到底有没有人知道啊,dxlookupedit怎么设置啊,我搞来搞去都出现莫明错误,参与者有分
- 如何有选择的对ListView进行改变颜色??? 想了好几天了郁闷中。
- 关注报表!!!
- 请教大家,怎么实现IE里头把HTM另寸为MHT文件的功能?
- Delphi 内存映像 问题在代码注示里,请帮修改下,
- sendmessage函数的问题
- onFilterRecord中如何使用函数???比如dayof(),为什么报错??
- 初学者问一个简单的问题,请帮助!
Format('%f',[456.456666])则结果为456.46
'values(%d,to_date(''%s'',''yyyy-mm-dd''),%f,%f,%f,%f,%d)';
这里设置一下小数位和精度