為什麼我的xxx.1會變成xxx.099?

h_q_p 2002-09-06 09:02:23
Delphi6+Sql 2000,字段為numeric(15,3);當本字段值為xxx.1時,如123.1時,
會變成123.099;當字段值為123.6時變成123.599?上帝呀,救救我....
...全文
23 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
h_q_p 2002-09-06
  • 打赏
  • 举报
回复
用Money型可以,結貼,謝謝各位。
耙子 2002-09-06
  • 打赏
  • 举报
回复
如果你学过10进制小数和2进制小数的转换问题,你就理解为什么这个问题了。
原因是10进制的0.1在2进制里面是无限循环小数,而浮点数的精度是有限的,再从2进制转换回来自然有损失了。

一般来说要么用double 要么用货币类型,货币类型是BCD类型,他的精度没问题。
h_q_p 2002-09-06
  • 打赏
  • 举报
回复
改用float,那可是123.099999999999999999999999999999999...
我更要哭了.....
qdlyly 2002-09-06
  • 打赏
  • 举报
回复
改用float类型
h_q_p 2002-09-06
  • 打赏
  • 举报
回复
我是要它補零,而不是向下移位...
即123.1應為123.100,而不是123.099...
日总是我哥 2002-09-06
  • 打赏
  • 举报
回复
1.如果你是用BDE的话,在配制BDE的时候设置EnabledBCD为TRUE
2.如果你是用ADO的话,可直接在对象浏览器上设定它的值!!

建议使用Money型!!
taxi 2002-09-06
  • 打赏
  • 举报
回复
改用float类型

5,388

社区成员

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

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