Sql server 在SQL Server 2008中使用浮点不起作用

Sql server 在SQL Server 2008中使用浮点不起作用,sql-server,Sql Server,我有一个SQL查询 select ExchangeRate, TotalAmt, ExchangeRate * TotalAmt TotalAmtConvert, ROUND(ExchangeRate * TotalARAmt, 0) TotalAmtRound from dbo.Table 我的结果: 汇率22450 总金额16593.67 TotalAmtNoRound372527891.5 总收入372527891 我想要TotalAmt

我有一个SQL查询

select 
    ExchangeRate,
    TotalAmt,
    ExchangeRate * TotalAmt TotalAmtConvert,
    ROUND(ExchangeRate * TotalARAmt, 0) TotalAmtRound 
from 
    dbo.Table
我的结果:

  • 汇率22450
  • 总金额16593.67
  • TotalAmtNoRound372527891.5
  • 总收入372527891
我想要TotalAmtRound=372527892

你能帮我吗?

天花()
代替
ROUND()

天花板-计算小数点右侧的值,然后 返回大于或等于指定值的最小整数 数值表达式,并接受一个值:


这就是为什么use不应该使用FLOAT。它是一种近似的数据类型。始终使用
DECIMAL
NUMERIC
datatypr

DECLARE @ExchangeRate  NUMERIC(22, 6) = 22450, 
        @TotalAmt      NUMERIC(22, 6) = 16593.67, 
        @ExchangeRate1 FLOAT = 22450, 
        @TotalAmt1     FLOAT = 16593.67 

SELECT numeric_result = Round(@ExchangeRate * @TotalAmt, 0), --Correct
       float_result = Round(@ExchangeRate1 * @TotalAmt1, 0), --Incorrect
       converted_numeric_result= Round(Cast(@ExchangeRate1 AS NUMERIC(22, 6)) 
                                         * Cast(@TotalAmt1 AS NUMERIC(22, 6)), 0) --Correct
当您选择
@ExchangeRate1*@TotalAmt1
时,它给出
372527891.499994
,但
@ExchangeRate*@TotalAmt
给出
372527891.5

结果:

╔════════════════╦═══════════════╦══════════════════════════╗
║ numeric_result ║ float_result  ║ converted_numeric_result ║
╠════════════════╬═══════════════╬══════════════════════════╣
║      372527892 ║     372527891 ║                372527892 ║
╚════════════════╩═══════════════╩══════════════════════════╝

非常感谢。我用天花板()代替圆形()。它现在正在工作。@binhnguyenttm-但是
ROUND
天花
的功能是不同的。示例
ROUND(12.2,0)
将给出
12
天花(12.2)
将给出
13
@binhnguyenttm-以下是感谢。我尝试使用你的方法,这就是我需要的结果。