我想转换一个金的数据类型以小数,因为我想要记录的结果,8位小数。

例如,在货币兑换率表,我看到的速存储为2871047428.20作为一个资金类型;使用Microsoft SQL管理工作室,我要除由10000000为了实现结果287.10474282;然而结果实际上我是287.1047.

我相信的理由我得到只小数点后4位是因为它是金钱数据类型,因此,我认为前进的方向是把这一小数的数据类型。...

有帮助吗?

解决方案

在这里比较左栏中的数值,右边一栏所计算出的金钱价值:

DECLARE @money AS money
SET @money = 2871047428.20
SELECT CAST(@money AS decimal(34,4)) / 10000000, @money / 10000000

也参看在这里堆溢出:

其他提示

splattne的回答是正确的几乎,除了两个小的改动:

DECLARE @money AS money
SET @money = 2871047428.20
SELECT CAST(@money AS decimal(34,6)) / 10000000.0, @money / 10000000.0

这会给出正确的答案:287.10474282。我所做的是改变的精确度值与添加” 0.0" ,以分频值。

这是困扰我现在唯一的一点是我投的价值为十进制(34,6)的事实,而不是预期的十进制(34,8)。

所以,我写查询以另一种方式,这让我更有意义:

DECLARE @money AS money
SET @money = 2871047428.20
SELECT CAST((@money / 10000000.0) AS decimal(34,8)), @money / 10000000.0

请看看哪一个适合你。

    SELECT CAST(currency_rate AS decimal) / 10000000 FROM ...
scroll top