Sql server 在SQL Server 2008中使用浮点不起作用
我有一个SQL查询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
select
ExchangeRate,
TotalAmt,
ExchangeRate * TotalAmt TotalAmtConvert,
ROUND(ExchangeRate * TotalARAmt, 0) TotalAmtRound
from
dbo.Table
我的结果:
- 汇率22450
- 总金额16593.67
- TotalAmtNoRound372527891.5
- 总收入372527891
天花()
代替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-以下是感谢。我尝试使用你的方法,这就是我需要的结果。