我有不同小数的数字 - 可能正好是100或100.65468151。 我需要的是 - 显示至少1个小数(或更多)。因此,如果它恰好是100 - 它应该显示为100.0。 100.65468151应显示所有可用的小数。
我该怎么做? 附:如果需要,它可以转换为char。
答案 0 :(得分:2)
这似乎是一个奇怪的要求,但你可以使用to_char()
和format model;只需使用`999.099999999'虽然不会很有效:
with t (n) as (
select 100 from dual
union all select 100.0 from dual
union all select 100.6 from dual
union all select 100.654 from dual
union all select 100.65468151 from dual
)
select n, to_char(n, '999999999.09999999') as text
from t;
N TEXT
---------- -------------------
100 100.00000000
100 100.00000000
100.6 100.60000000
100.654 100.65400000
100.654682 100.65468151
但如果添加the FM
format modifier,则不会包含额外的尾随零:
with t (n) as (
select 100 from dual
union all select 100.0 from dual
union all select 100.6 from dual
union all select 100.654 from dual
union all select 100.65468151 from dual
)
select n, to_char(n, 'FM999999999.09999999') as text
from t;
N TEXT
---------- -------------------
100 100.0
100 100.0
100.6 100.6
100.654 100.654
100.654682 100.65468151
在小数点之前和之后需要适当数量的9,因此当然可以渲染所有可能的值;并且您可能更喜欢将小数点前的最后9位设为零。您可能还需要考虑使用D
格式元素而不是句点.
,以便它尊重会话NLS设置。
或者,让您的表示层(应用程序,报告工具或其他)进行格式化。你应该把它留作实际的数字直到最后一刻。