gpt4 book ai didi

SQL Server 2005 : str(4. 65,5,1) = 4.7,str(3.65,5,1) = 3.6?

转载 作者:行者123 更新时间:2023-12-02 09:37:48 24 4
gpt4 key购买 nike

在 SQL Server 2005 中,str() 在舍入时对某些浮点值表现得很奇怪。在网上搜索时,我发现了以下代码和解释。

select STR(4.65,5,1) -- it will give 4.7
select STR(3.65,5,1) -- it will give 3.6

我得到了一些解释herehere ,但没有从那里得到任何东西(上面的 T-SQL 取自解释链接之一)

谁能解释一下为什么它会这样吗?

最佳答案

STR() 的语法; STR ( float_expression [ , length [ ,decimal ] ] ) 清楚地表明该数字是 float_expression 。因此,无论您给出的数字是什么,它都会首先转换为 FLOAT(n),其中默认值为 n = 53

所以

SELECT STR(4.65,5,1), SELECT STR(3.65,5,1)  

等于:

SELECT STR(CAST(4.65 AS FLOAT(53)),5,1) , STR(CAST(3.65 AS FLOAT(53)),5,1)

如果您指定 n,例如n = 4,它将给出您期望的答案(即 4.7 和 3.7)

SELECT STR(CAST(4.65 AS FLOAT(4)),5,1) , STR(CAST(3.65 AS FLOAT(4)),5,1)
--4.7, 3.7

关于SQL Server 2005 : str(4. 65,5,1) = 4.7,str(3.65,5,1) = 3.6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585320/

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