我需要SQL专家的帮助。我试图获取带有4位小数的数据。我正在计算“钱”类型。但是,这个计算并不符合我的喜好。如何正确舍入SQL钱类型?
下面是一个具有常规数字和相同货币类型值的示例。
DECLARE @MaxAmt money
DECLARE @MinAmt money
SET @MaxAmt = 207998693.55
SET @MinAmt = 20799442.35
SELECT
((207998693.55 - 20799442.35)/2 + 20799442.35)/24 AS Col1,
((@MaxAmt - @MinAmt)/2 + @MinAmt)/24 AS Col2
Col1中显示值等于4766627.831250000 虽然具有Col2中值4766627.8312。
我的目标是只显示4位十进制数字,但它应该正确地舍入。我期望4766627.8313的价值。
下面的投射后会显示哪一个。
SELECT CAST(((207998693.55 - 20799442.35)/2 + 20799442.35)/24 AS DECIMAL(12,4))
但是,当我处理金钱键入我的价值后,小数是0.8312而不是0.8313
这是因为您的MONEY计算可能使用了[Banker's Rounding](http://en.wikipedia.org/wiki/Rounding#Round_half_to_even) - 我假设有一个系统设置;你使用的是什么RDBMS? – 2013-03-18 21:38:57
我正在使用MS SQL。我可以做些什么来获得我需要的舍入? – Vadim 2013-03-18 21:49:35
...通过文档快速浏览并不能揭示任何内容;我怀疑你可能必须首先将列转换为“DECIMAL”:它很可能在实际评估过程中四舍五入,因此您必须提前告诉它需要什么(更大)的类型。 – 2013-03-18 22:25:48