sql - SQL | 无论最后一个整数值如何,如何总是四舍五入,即使它可能是 0
问题描述
我目前正在将值输出到小数点后 6 位,并且无论整数值如何,都希望将第 6 位四舍五入。
到目前为止,我一直在使用 CEILING() 函数,该函数对于四舍五入的值 1-9 非常有效;但是,在我将第 7 位小数设为 0(例如:2705.1520270)的情况下,该函数不会四舍五入到 2705.152028。
select CEILING(price*1000000)/1000000 as PriceRound
from tc_alcf a (nolock)
解决方案
这是一种方法:
SELECT ROUND(2705.1520270 + 0.0000005, 6);
2705.1520280
演示
我们可以添加0.0000005
到输入,然后只需使用 SQL Server 的ROUND
函数到小数点后 6 位。这是有效的,因为小数点后六位在 0 和 0.4999(重复)之间的值将变为 5 到 0.9999(重复),这意味着它们将四舍五入到下一位。并且在小数点后六位已经有 5 或更大的值不会被提升到下一位。
许多开发人员应该熟悉这个问题,因为它是四舍五入的问题。
推荐阅读
- sql - 如何确保两个列值在数据库表中只存在一次?
- visual-studio - 为 asp.net core 3.1 Web 应用程序构建 docker 容器时解析目录名称的问题
- node.js - 如何使用节点获取实时信息
- c# - 需要帮助解决 400 错误请求
- ssh - Paramiko,如何从执行的脚本中读取输出?
- vue.js - 如何在 Nuxtjs 中创建一个 utils
- c# - iTextSharp 版本 5.5.13.2 的 BouncyCastle.Crypto dll 问题
- javascript - 为什么不查看更新?
- python - Keras 模型在训练期间有 2 个输入,但在推理期间只有 1 个
- mysql - 按子句和列表分组