【问题标题】:Getting wrong result when using bigint in sql query在 sql 查询中使用 bigint 时得到错误的结果
【发布时间】:2013-05-03 05:00:00
【问题描述】:

我在查询中通过了 AmountDue 以下,但得到了错误的结果。 AmountDue 数据类型是浮点数。

AmountDue: 2412880.28
AmountDue: 561.06

我的查询:

select CONVERT(varchar,(select convert(bigint,AmountDue*100)))
from dbo.tblBidResults

我得到的结果是错误的:

241288027
56105

正确结果:

241288028
56106

【问题讨论】:

  • AmountDue 是什么数据类型?
  • AmountDue 数据类型为浮点数

标签: sql-server sql-server-2008 tsql sqldatatypes type-conversion


【解决方案1】:

尝试转换为数字而不是 bigint:

DECLARE @temp float
set @temp = 2412880.28
SELECT CONVERT(varchar,(CONVERT(numeric(27,0),@temp*100)))

这里有一个good post 说明了这个问题的原因。

【讨论】:

    【解决方案2】:
    DECLARE @temp float
    set @temp = 2412880.28
    select convert(varchar,convert(decimal(9,0),@temp*100))
    

    SQL FIDDLE

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      相关资源
      最近更新 更多