如何解决具有科学计数法的Oracle舍入函数
有人知道如何使它在Oracle中工作吗?该值是表中的值,我需要将此值舍入为两位数:
Select round(3.00345678908765E+60,2) from dual
解决方法
您需要将舍入移位-60个小数位(因此从+2到-58):
Select round( 3.00345678908765E+60,-58) from dual
输出:
| ROUND(3.00345678908765E+60,-58) | | ------------------------------------------------------------: | | 3000000000000000000000000000000000000000000000000000000000000 |
如果要舍入到3个有效数字:
SELECT ROUND( value,2 - FLOOR( LOG( 10,value ) ) ) FROM table_name;
其中的示例数据:
CREATE TABLE table_name ( value ) AS
SELECT 3.00345678908765E+60 FROM DUAL UNION ALL
SELECT 3.00555678908765E+60 FROM DUAL UNION ALL
SELECT 3.05345678908765E+58 FROM DUAL;
输出:
| ROUND(VALUE,2-FLOOR(LOG(10,VALUE))) | | ------------------------------------------------------------: | | 3000000000000000000000000000000000000000000000000000000000000 | | 3010000000000000000000000000000000000000000000000000000000000 | | 30500000000000000000000000000000000000000000000000000000000 |
或者您可以使用TO_CHAR
将值转换为以科学计数形式四舍五入的字符串:
SELECT TO_CHAR( value,'FM0.00EEEE' ) AS as_string,TO_NUMBER(TO_CHAR( value,'FM0.00EEEE' )) AS as_number
FROM table_name;
输出:
AS_STRING | AS_NUMBER :-------- | ------------------------------------------------------------: 3.00E+60 | 3000000000000000000000000000000000000000000000000000000000000 3.01E+60 | 3010000000000000000000000000000000000000000000000000000000000 3.05E+58 | 30500000000000000000000000000000000000000000000000000000000
db 提琴here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。