Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用convertsqlserver进行除法_Sql_Sql Server - Fatal编程技术网

使用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))