有人可以解释以下结果。在进行乘法和除法时,我已经阅读了有关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)?
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))