我想将十进制数字四舍五入到第一位有效数字。由于它们都有不同数量的前导零小数,因此我搜索了该站点并找到以下表达式。
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
任何帮助将不胜感激!谢谢!
您的代码应该贴近您的要求。我只建议修改正则表达式,使其考虑点左侧的数字:
TRUNC(EPSILON,LENGTH(REGEXP_SUBSTR(EPSILON,'^\d*\.0*')))