sql - 在 sql server 中未按预期实现使用 round 函数的截断
问题描述
我有一个存储在浮点数据类型中的字段。我需要将其转换为数字,而不会在转换过程中隐式四舍五入。
我已经尝试过round(float_data,scale,1)。在大多数情况下似乎都可以正常工作。但是当小数点后的位数小于圆形函数中提到的比例时,它会尝试降低数字而不是在末尾附加 0。
例如,round (0.0243,5,1) 返回 0.02429。为什么不简单地将数字截断为提到的位数?
我知道这个问题是当我们使用 float 作为源数据类型但我无法更改源数据类型时。
当通过 ssis 实现相同的截断时,就会发生相同的截断。sql中有什么方法可以实现吗?
解决方案
因为当转换为浮点数时,十进制 0.0243 存储为 0.02429999969899654388427734375,截断为 0.02429。看起来你想要舍入而不是截断,例如
declare @f float = 0.0243
select round(@f,5,0)
推荐阅读
- javascript - 向 TypeScript 对象添加值
- node.js - 如何在无服务器应用程序中通过 YAML 添加自定义文件夹和文件
- python - 使用 Python 和 Selenium 通过 JavaScript 抓取动态生成的 html
- ios - 如何转换 SKShapeNode
- tensorflow - Yocto 张量流 2.0
- python - 如何计算中天?
- python - Scraping a website with a particular format using Python
- android - 使用病毒工具扫描的 Android APK 文件显示 Trojan-Spy.AndroidOS.Agent
- laravel - Laravel 验证将变量传递给 Rule::in() 方法
- html - 当我修改普通的 css 文件时,缩小的 CSS 文件不会更新 - Wordpress