我们有一个科学应用程序,它在Access中,我正在迁移到Oracle。访问数据类型为Number。Oracle的编号为(20,12)。
这些数据是我们在报告中向用户显示的小数字,例如1.000 E-5。
然而,这个数字实际上大约是0.0000099999,也就是0.99999 E-5。
我可以将数字转换为科学记数法,但它返回0.99999 E-5,不进行舍入。我希望能够对这个数字进行舍入。不幸的是,所有的数字都是以小数点#表示的。例如:
0.9999E-5
0.9999E-10
因此,我认为仅仅是直线(N,X)是行不通的。我想同时四舍五入到3位小数,并用科学记数法表示。从本质上讲,这是精确度的科学概念,小数点的#会有所不同,但有效数字的#始终是3。
发布于 2020-02-15 02:39:40
我想这就是你想要的?
select to_char(0.0000099999 , '9.999EEEE') from dual1.000E-05
select to_char(0.0000000000099999 , '9.999EEEE') from dual1.000E-11
发布于 2020-02-20 00:36:26
如果每个数字都需要四舍五入(基于你的最新评论),我假设预期输出如下:
0.00009999 => 1.000E-04
0.0009999 => 1.000E-03
0.009999 => 1.000E-02
0.09999 => 1.000E-01
0.9999 => 1.000E-00
如果是,请尝试:
select to_char(round(<input>,abs(trunc(log(10,<input>)))),'0.999EEEE') from dual
示例:
select to_char(round(0.00009999,abs(trunc(log(10,0.00009999)))),'0.999EEEE') from dual
输出:
1.000E-04
https://stackoverflow.com/questions/60231614
复制相似问题