PostgreSQLでは、round()
関数は数値の丸めに使用されます。
この関数は、使用方法に応じて、2つの方法のいずれかで機能します。数値を最も近い整数、または指定した小数点以下の桁数に丸めることができます。
これは、関数を呼び出すときに関数に渡す引数の数によって決まります。
構文
round()
関数は、次のいずれかの方法で使用できます。
round(dp or numeric)
round(v numeric, s int)
最初の構文は、数値を最も近い整数に丸めます。 dp
double precision
を示します 。
2番目の構文は、指定された小数点以下の桁数に丸めます。この場合、v
は番号であり、s
は小数点以下の桁数です。
この関数の戻りタイプは入力タイプと同じです。
最初の構文の例
これが最初の構文を使用する例です。
SELECT round(13.50);
結果:
14
この場合、秒の小数部は50であるため、数値は切り上げられます 最も近い整数に。
分数秒が50未満の場合、切り捨てられ、結果は13になります。
これがその例です。
SELECT round(13.49);
結果:
13
2番目の構文の例
2番目の構文を使用する例を次に示します。
SELECT round(13.50, 1);
結果:
13.5
この場合、何も切り上げられず、ゼロが単にドロップされました。このような場合、trunc()
を使用した場合と同じ結果が返されます。 働き。
ただし、小数秒をわずかに調整すると、結果が丸められていることがわかります。
SELECT
round(13.45, 1) AS "13.45",
round(13.44, 1) AS "13.44";
結果:
13.45 | 13.44 -------+------- 13.5 | 13.4
ただし、結果は2番目の引数で指定した秒数に完全に依存することに注意してください。
これも同じ例ですが、小数点以下2桁が指定されています。
SELECT
round(13.45, 2) AS "13.45",
round(13.44, 2) AS "13.44";
結果:
13.45 | 13.44 -------+------- 13.45 | 13.44
この場合、提供した小数点以下の桁数を正確に指定したため、何も丸められませんでした。
小数秒の追加
元の数値よりも多くの小数秒を指定することを止めるものは何もありません。
SELECT
round(13.45, 3) AS "13.45",
round(13.44, 3) AS "13.44";
結果:
13.45 | 13.44 --------+-------- 13.450 | 13.440
この場合、小数秒の右側にゼロを追加するだけです。
元の数値に小数秒が含まれていない場合に小数点以下の桁数を指定する例を次に示します。
SELECT round(12, 3);
結果:
12.000
負の小数点以下の桁数
2番目の引数が負の値の場合は次のようになります。
SELECT round(789, -2);
結果:
800
こちらがもう少しです。
SELECT
round(789, -2),
round(789, -1),
round(489, -2),
round(489, -1),
round(489, -3);
結果:
round | round | round | round | round -------+-------+-------+-------+------- 800 | 790 | 500 | 490 | 0
Round()とTrunc()
場合によっては、round()
関数はtrunc()
と同じように機能するように見える場合があります 。しかし、それらはまったく異なります。
round()
関数は数値を丸めます。数値は、最も近い整数または指定された小数点以下の桁数に丸められます(1つの引数を指定するか2つの引数を指定するかによって異なります)。
trunc()
一方、関数は、数値をゼロまたは指定された小数点以下の桁に切り捨てるだけです。丸めは実行されません。
違いを示す例を次に示します。
SELECT
round(1.49, 1),
trunc(1.49, 1);
結果:
round | trunc -------+------- 1.5 | 1.4