小数点保留问题

lxpq 2000-06-01 09:45:00
本人用Delphi5.0编制数据库程序,使用MSSQL6.5数据库。经常发现我存到数据库的数据与存储前的数据不同。例如:m=0.2 将m存入到数据库中时会变成0.19999999。数据库中的该字段定义为decimal(18,8),请问该如何将数据存成正确的值。(这种现象只是经常出,但不是必定出)
...全文
551 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vga 2000-06-17
  • 打赏
  • 举报
回复
to binchang:

select round(field1*field2,2) as field3 from table

这样写好象通不过耶?
nationphone 2000-06-12
  • 打赏
  • 举报
回复
好象BORLAND的软件都有浮点数问题,我在BCB中也有碰到.
我用标准C库的FILE函数与VCL库中的WriteFile均出现了同样的结果,就是喜欢.1把改成
.0999999等.
binchang 2000-06-12
  • 打赏
  • 举报
回复
select round(field1*field2,2) as field3 from table
vga 2000-06-10
  • 打赏
  • 举报
回复
接上面
比如:
select field1*field2 as field3 from table...

field1为奖金, field2 为系数,field3为实发奖金。
zf 2000-06-01
  • 打赏
  • 举报
回复
这是由于mssql与delphi的数据的格式的差异造成,在BDE中system选项中的format中的设置。
fyje 2000-06-01
  • 打赏
  • 举报
回复
1.双击对应该库的DataSet,添加上所有的字段,选中该字段,修改它的DisplayFormat属性就可以了,比如你要求零不显示,保留两位小数,那么给该属性赋值"0.00;; ",注意最后有个空格,假如你要显示一个"$"字符,你可以写上"$ 0.00;; "就行了.
2.使用字符型字段存储也可以,在存的时候使用formatfloat('0.00;; ',float);
eaglet 2000-06-01
  • 打赏
  • 举报
回复
用TQuery 控件,通过写SQL脚本的方式写库
如 Query.sql.add('insert table values (0.2)');
hlbl11 2000-06-01
  • 打赏
  • 举报
回复
使用ASString赋值,不要使用AsFloat
wx_zhang 2000-06-01
  • 打赏
  • 举报
回复
用format('.2n',[])函数,[]中是要存放的数值,然后将转换后的值写入数据库字段中。
ymxxm 2000-06-01
  • 打赏
  • 举报
回复
设置BDE可以解决数据精确度总问题:
参数 ENABLE BCD=true即可能性.OK?!

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧