使用convertsqlserver进行除法
可能重复:使用convertsqlserver进行除法,sql,sql-server,Sql,Sql Server,可能重复: 我有个问题。我已经编写了一个函数,但是当我用convert除法两个数时遇到了一些问题。以下是一个例子: Declare @A Numeric(18,6) Declare @B Numeric(18,6) Set @A = 1 Set @B = 130 如果我执行以下查询,结果是:0.0076923076922307692 Select Convert(Decimal(30,18),@A / @B) 但如果我这样做,结果是:0.0076923000000000000(丢失小数)
我有个问题。我已经编写了一个函数,但是当我用convert除法两个数时遇到了一些问题。以下是一个例子:
Declare @A Numeric(18,6)
Declare @B Numeric(18,6)
Set @A = 1
Set @B = 130
如果我执行以下查询,结果是:0.0076923076922307692
Select Convert(Decimal(30,18),@A / @B)
但如果我这样做,结果是:0.0076923000000000000
(丢失小数)
有人能解释一下,如果我使用相同的精度和小数位数,为什么会丢失小数?当除法的理论精度超过38时,小数位数会被截断到小数点后6位。十进位/十进位除法的理论精度公式记录在网上的书籍中。与其跳过那个老问题两次(很好地回答了这个问题),这里是结束链接:
Select Convert(Decimal(30,18),Convert(Decimal(30,18),@A) / Convert(Decimal(30,18),@B))