SQL Server十进制计算和默认值

问题描述 投票:0回答:1

有人可以解释以下结果。在进行乘法和除法时,我已经阅读了有关SQL十进制类型以及精度和小数位数的信息,但我仍然无法理解:

select cast(7 as decimal(25,13))*cast(15 as decimal(25,13)) = 105.0000000000000

select cast(15 as decimal(25,13))/cast(11 as decimal(25,13)) = 1.3636363636363

select cast(7 as decimal(25,13))*cast(15 as decimal(25,13))/cast(11 as decimal(25,13)) = 9.545454

select cast(cast(7 as decimal(25,13))*cast(15 as decimal(25,13)) as decimal(25,13))/cast(11 as decimal(25,13)) = 9.5454545454545

因此,乘法和除法产生13个小数,但是当链接时,它们突然产生6个小数。仅当乘法首先被转换为十进制(25,13),然后才被除,才再次产生13个小数。 SQL Server是否将乘法转换为默认的十进制(38,0),然后将其除以十进制(25,13)?

我正在为非常低价的产品进行物料清单计算,我希望我能得到所有的小数。如果没有另外说明,我是否需要在每个步骤上进行此转换,还是可以某种方式为单个查询设置默认值,以便在所有小数点上使用此小数(25,13)?

sql-server decimal
1个回答
0
投票

Saya mencoba dengan cara melakukan perkalian lalu di convert menjadi desimal

select cast(7*15 as decimal(25,13))/cast(11 as decimal(25,13))
© www.soinside.com 2019 - 2024. All rights reserved.