Oracle如何将十进制截断为1个有效数字?

问题描述 投票:0回答:1

我想将十进制数字四舍五入到第一位有效数字。由于它们都有不同数量的前导零小数,因此我搜索了该站点并找到以下表达式。

TRUNC(EPSILON,LENGTH(REGEXP_SUBSTR(EPSILON,'.0*')))

它适用于所有少于5个前导小数位的数字,并且当该数字具有5个或更多前导小数位时,不返回正确的结果。

请参见下面的示例:

**EPSILON**     **Expected Result**     **Actual Result**
0.0000083333    0.0000083333            0
0.0000041666    0.0000041666            0
0.000025        0.00002                 0.00002
0.000012195     0.00001                 0.00001
0.00002         0.00002                 0.00002
0.00033333334   0.0003                  0.0003

任何帮助将不胜感激!谢谢!

sql oracle numbers rounding
1个回答
0
投票

您的代码应该贴近您的要求。我只建议修改正则表达式,使其考虑点左侧的数字:

TRUNC(EPSILON,LENGTH(REGEXP_SUBSTR(EPSILON,'^\d*\.0*')))
© www.soinside.com 2019 - 2024. All rights reserved.