紧急求救!!!!!!!!!!

supershan 2000-05-30 12:33:00
问题一:在delphi中保留两位小数的函数是什么?并且可进行四舍五入

问题二:数据库为ACCESS,有三个字段,数量、单价、金额,输入数量与单价后自动计算出金额,单价与金额为货币型字段。但是在输入中,如数量输入10,单价输入1.2345,则金额算为12.34。由于自动保留两位小数所以界面上表现为数量10,单价1.23,
金额12.34,这样给人以一种计算不等的感觉。而在数据库中就更可怕了,数据库中数量为10,单价为1.2345,金额却为12.3449.

请问上述问题二如何解决?
1。如怎么控制在DBGRID中只能输入两位小数
2。如怎么在数据库中输入单价后自动保留两位。
其中我已在ACCESS数据库中进行了小数位设置,但还无济于事。我想这个问题是普遍存在的,希望高手指点?
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
halfone 2000-05-30
  • 打赏
  • 举报
回复
1.FloatToDecimal,FormatFloat看看它们的帮助吗?

2.金额字段是numeric(16,2)吗?
patpat 2000-05-30
  • 打赏
  • 举报
回复
用MaskEdit 控件
要不然就写OnKeyPress事件,
a:=Pos('.',s);
if (a<>-1)and(length(s)-a>2) then Key:=#0
supershan 2000-05-30
  • 打赏
  • 举报
回复
wx_zhang已解决了第一个问题。

第二个问题哪位高手来解决呢?控制输入带小数时只能带两位小数,(在输入时控制)
wx_zhang 2000-05-30
  • 打赏
  • 举报
回复
so easy,use format('%.2n',[ ]) 函数,[]中是要转换的浮点数,将转换后的值保存到数据表中。
supershan 2000-05-30
  • 打赏
  • 举报
回复
回thinking_man:
假如我的单价小数为两位,由于用户误操作,输入了多于两位小数的单价,那么数据库中的实际数就是用户输入的,而在界面上反映的是数据库自动四舍五入的数,再与数量相乘,得到的金额是实际单价与数量的积,而不是界面上的单价与数量的积。这样用户会怀疑。所以如何控制在输入时,就只能输入两位小数,这样就可以了。

还有就是在delphi中对一个数保留两位小数的函数是什么?并且可进行四舍五入
thinking_man 2000-05-30
  • 打赏
  • 举报
回复
这是属于计算机内部浮点数的问题,有个解决办法,你可以试试:
设置字段类型为FLOAT,而不是货币类型,并且,小数点后多保留几位。
我们公司的单价是保留8位的。
supershan 2000-05-30
  • 打赏
  • 举报
回复
回halfone:

要数据库中单价是保留两位,但只是显示为两位,如在输入时为4位,则实际数为4位,所以在计算金额时,就不对了
halfone 2000-05-30
  • 打赏
  • 举报
回复
哦!刚才看错了。金额是货币型
我在paradox中试了一下。没有这种情况发生的。除非你WINDOWS中设置货币型为两位小数的。

1。如怎么控制在DBGRID中只能输入两位小数
试一下FIELD的editmask;
2。如怎么在数据库中输入单价后自动保留两位。
实在不行的话在WINDOWS中设置嘛!

5,386

社区成员

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

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