sql 转换为金钱四舍五入

Posted

技术标签:

【中文标题】sql 转换为金钱四舍五入【英文标题】:tsql casting to money rounds up 【发布时间】:2009-11-12 07:12:10 【问题描述】:

将 varchar 值转换为 MONEY 时,会将值四舍五入到最接近的 0.10,如何防止这种四舍五入?

更新:我发现了问题。在子查询中,该值是从 varchar 转换为 FLOAT,然后我试图从 FLOAT 转换为 MONEY。

【问题讨论】:

【参考方案1】:

请参阅 Brad Schulz 关于该主题的这篇非常有趣的博文:

Throw Your MONEY Away

出于各种原因,他甚至主张从不使用 MONEY 数据类型 - 有趣且启发灵感的阅读!

马克

【讨论】:

【参考方案2】:

我不确定我是否理解您的问题。

查看下面的代码时

DECLARE @money AS MONEY,
        @varchar AS VARCHAR(20)

SET @varchar = '1000.456789'

SELECT CAST(@varchar AS MONEY)
SELECT @money = @varchar
SELECT @money

它被四舍五入到最接近的小数点后第四位,而不是小数点后第一位。

【讨论】:

以上是关于sql 转换为金钱四舍五入的主要内容,如果未能解决你的问题,请参考以下文章

金钱应该使用啥数据类型

SQL怎么截取小数点前的数字,但是不要四舍五入

四舍五入 .NET DateTime 毫秒,因此它可以适应 SQL Server 毫秒

js四舍五入保留两位小数的方法

在Javascript中将double转换为int而不四舍五入

SQL函数-str()