gpt4 book ai didi

sql-server - SQL 除法精度/损失 float x decimal

转载 作者:行者123 更新时间:2023-12-03 11:21:33 26 4
gpt4 key购买 nike

为什么 SQL Server 会失去小数除法的精度?

抱歉格式不对,我是用手机发的...

declare @base decimal(38,10) = -3062.325,
@div decimal(38,10) = 25812561468.9017,
@mult decimal(38,10) = 103177265901.524

select @base / @div * @mult

结果:0

declare @base decimal(28,10) = -3062.325,
@div decimal(28,10) = 25812561468.9017,
@mult decimal(28,10) = 103177265901.524

select @base / @div * @mult

结果:-12236.823736

declare @base float = -3062.325,
@div float = 25812561468.9017,
@mult float = 103177265901.524

select @base / @div * @mult

结果:-12240.6418744047

最奇怪的是 float 返回与 Excel 和 Wolfram alpha 相同的结果 ...

Excel 结果:-12240.64187

最佳答案

在 SQL Server 中,结果的小数精度和小数位数取决于操作数的精度和小数位数

enter image description here

"结果精度和小数位数的绝对最大值为38。当结果精度大于38时,将其减少到38,并减少相应的小数位数,以尽量防止结果的整数部分被截断. 在某些情况下,例如乘法或除法,比例因子不会减少以保持小数精度,但会引发溢出错误。"

参见 Precision, scale, and Length

关于sql-server - SQL 除法精度/损失 float x decimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50537018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com