sql - TSQL 小数精度舍入
问题描述
我让一位开发人员询问了一些最近更新的数据的精度问题。
他将列的精度从十进制(38,20)更改为十进制(8,4)。
在对表进行更改之前,他运行了这个查询。
UPDATE Rate
SET Rate = ROUND(Rate,4)
更新了,他认为他很好。
然而,经过进一步审查,他发现 73.79999999999999715783 更新为 73.7999。他预计它会四舍五入到 73.8000。
如果我运行以下代码,我会得到预期的结果。
DECLARE @OrigValue DECIMAL(38,20) = 73.79999999999999715783
SELECT @OrigValue, ROUND(@OrigValue, 4)
SELECT @OrigValue, CAST(@OrigValue AS DECIMAL(8,4))
Output:
(No column name) (No column name)
73.79999999999999715783 73.80000000000000000000
(No column name) (No column name)
73.79999999999999715783 73.8000
为什么更新语句的结果与选择示例的结果不同?我错过了什么?
解决方案
推荐阅读
- python - 从模型动态继承
- ms-access-2013 - MS Access Form 在 SQL Query 中添加“And Or”运算符
- kubernetes - exec 类型容器探测超时
- javascript - 部署时找不到公共文件
- android - 防止键盘出现在 Jetpack Compose 应用程序中
- oracle-golden-gate - 是否可以从外部文件中找到源数据库信息
- json - SWIFT:遍历转换为字典的 JSON 对象
- python - Pandas 用连续行替换行值
- javascript - 为什么我的 YouTube Iframe API 视频会关闭?
- c++ - 从文件中读入一个单词