2016-04-26 5 views
1

3番目の10進数の値の後にカンマの後に2桁しか保持しないように、数字を丸めたいとします。私が望むものの 例:カンマの後の数字の丸め処理

1,374 --> 1,37 
1,375 --> 1,37 (the 5 need to be rounding down) 
1,3756 --> 1,37 (We only look the third decimal, even if the 4th is a 6) 
1,376 --> 1,38 

あなたはそれをどのように行うのでしょうか? ROUND()関数を確認しましたが、動作が必要ではありません。

ご協力いただきありがとうござい

+0

なぜあなたは1.37に1375 [999 ...] *ダウン*を四捨五入したいのですが、1.376 *は1.38まで*でしょうか?それは珍しい要求のようです。 –

+0

皆さんのお返事ありがとうございました! これはまさに私が探していた種類のトリックでした。 ラウンド(trunc(、3) - 0.001,2) - >完全に動作します – Seb63000

答えて

1

あなたは少し丸めている値を調整することができ、例:

round(trunc(<your number>, 3) - 0.001, 2) 

trunc(<your number>, 3)は、3番目の10進数の後のすべてが無視されることを意味します。したがって、1,3756は1,375と同じように扱われます。 - 0.001は、通常のround()の動作により、上下の切り替えポイントが.x5ではなく.x6になるように、切り捨てられた値をわずかに調整します。

クイックデモ:

alter session set nls_numeric_characters =',.'; 

with t (n) as (
    select 1.37 from dual 
    union all select 1.374 from dual 
    union all select 1.374999 from dual 
    union all select 1.375 from dual 
    union all select 1.375001 from dual 
    union all select 1.3756 from dual 
    union all select 1.375999 from dual 
    union all select 1.376 from dual 
    union all select 1.37999 from dual 
) 
select n, round(n, 2) as simple, trunc(n, 3) as tmp1, trunc(n, 3) - 0.001 as tmp2, 
    round(trunc(n, 3) - 0.001, 2) as adjusted 
from t; 

     N  SIMPLE  TMP1  TMP2 ADJUSTED 
---------- ---------- ---------- ---------- ---------- 
     1,37  1,37  1,37  1,369  1,37 
    1,374  1,37  1,374  1,373  1,37 
    1,374999  1,37  1,374  1,373  1,37 
    1,375  1,38  1,375  1,374  1,37 
    1,375001  1,38  1,375  1,374  1,37 
    1,3756  1,38  1,375  1,374  1,37 
    1,375999  1,38  1,375  1,374  1,37 
    1,376  1,38  1,376  1,375  1,38 
    1,37999  1,38  1,379  1,378  1,38 
1

ここのようなfloorまたはtruncと組み合わせて使用​​roundは:

with t as (
    select column_value val 
    from table (sys.odcinumberlist(1.374, 1.375, 1.3756, 1.376))) 
select val, 
     round(trunc(val, 3)-.0001, 2) v1, 
     round((floor(val*1000)-1)/1000, 2) v2 
    from t 

が出力:

 VAL   V1   V2 
---------- ---------- ---------- 
    1,374  1,37  1,37 
    1,375  1,37  1,37 
    1,3756  1,37  1,37 
    1,376  1,38  1,38 
関連する問題