gpt4 book ai didi

tsql - TSQL Round()不一致?

转载 作者:行者123 更新时间:2023-12-04 13:54:19 28 4
gpt4 key购买 nike

我们遇到的问题简化为以下两个语句:

select convert(float, (convert(float,5741.61)/convert(float, 196.00)) * convert(float,14.00)) as unrounded, round(convert(float, (convert(float,5741.61)/convert(float, 196.00)) * convert(float,14.00)), 2)  as roundedTo2dp

select convert(float, 410.115) as unrounded, ROUND( convert(float, 410.115), 2) as roundedTo2dp

第一条语句使用浮点数来计算410.115的值,并且该结果还将round()保留到小数点后2位。四舍五入后的值为410.11。

第二条语句使用浮点值410.115,并将其四舍五入到小数点后两位。舍入后的结果为410.12。

为什么在将值四舍五入时将一个值四舍五入,将另一个值四舍五入呢?

如何使第一条语句四舍五入到410.12?

编辑:道歉格式化-stackoverflow没有显示这台机器上的任何格式(很奇怪)。

最佳答案

小数精度比浮点数更好。如果将浮点数更改为DECIMAL(18,2),则将获得期望的结果,并且不再需要调用round函数。

select convert(decimal(18,2), (convert(decimal(18,2),5741.61)/convert(decimal(18,2), 196.00)) * convert(decimal(18,2),14.00)) as unrounded, round(convert(decimal(18,2), (convert(decimal(18,2),5741.61)/convert(decimal(18,2), 196.00)) * convert(decimal(18,2),14.00)), 2)  as roundedTo2dp

结果是
unrounded   roundedTo2dp
410.12 410.12

链接到有关小数的MSDN。 http://msdn.microsoft.com/en-us/library/ms187746.aspx

希望对您有帮助...

关于tsql - TSQL Round()不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6777018/

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