日期:2014-05-18  浏览次数:20802 次

关于Money字段类型的问题
数据库里的货币类型的字段我选择了MONEY类型,但是使用的过程中遇到了很多让我无比困惑的问题,
1、数据库里的yajin字段明明数值都是200,使用select sum(yajin) 求和,5个200理论上来讲应该是1000,但是求和出来的结果却是999,这是为什么呢?200*5=999???
2、数据库里的值明明是12.0000显示出来却是11.9999,到底是为什么呢?我应该怎么处理?

------解决方案--------------------
精度问题吧,MONEY不好用,货币用dec或者numeric就可以
------解决方案--------------------
探讨
数据库里的货币类型的字段我选择了MONEY类型,但是使用的过程中遇到了很多让我无比困惑的问题,
1、数据库里的yajin字段明明数值都是200,使用select sum(yajin) 求和,5个200理论上来讲应该是1000,但是求和出来的结果却是999,这是为什么呢?200*5=999???
2、数据库里的值明明是12.0000显示出来却是11.9999,到底是为什么呢?我应该怎么处理?

------解决方案--------------------
Money数据类型是特殊的decimal
是固定的四位小数
应该不是所谓的近似问题
我想楼主的应该是程序端的数据类型的问题
或者楼主
可以把语句直接在数据库端执行看看

应该不会出现
5个200理论上来讲应该是1000,但是求和出来的结果却是999,这是为什么呢?200*5=999???

------解决方案--------------------
你用的是不是real/float?money精确数不可能出现这种问题。

------解决方案--------------------
那跟数据的数据类型无关了。
探讨
数据库里查询确实是1000,可是在ASP里却显示999,郁闷了