MariaDBにはROUND()があります 関数とTRUNCATE() 引数の正確な値に応じて、同じ結果または異なる結果を返すことができる関数。
関数名が示すように、ROUND() ラウンド 番号とTRUNCATE() 切り捨て 番号。数値を切り捨てると、丸めを実行せずに単純に切り捨てられます。
以下は、ROUND()の違いの概要です。 およびTRUNCATE() MariaDBで。
違い
簡単に言うと、各機能の違いは次のとおりです。
-
ROUND()ラウンド 指定された小数点以下の桁数に対する引数。これにより、結果が切り上げられる場合と切り上げられない場合があります。 -
TRUNCATE()単に切り捨てる 指定された小数点以下の桁数に対する引数。丸めは発生しません。
構文と定義
まず、各関数の構文と定義を次に示します。
ROUND()
ROUND() 関数は、次の2つの方法で使用できます。
ROUND(X)
ROUND(X,D)
ROUND() 引数Xを丸めます Dへ 小数位。丸めアルゴリズムは、Xのデータ型によって異なります。 。
TRUNCATE()
TRUNCATE() 関数は1つの構文でのみ使用できます:
TRUNCATE(X,D)
TRUNCATE() 数値Xを返します 、Dに切り捨てられます 小数点以下。
例
ROUND()の違いを示すための比較を次に示します。 およびTRUNCATE() :
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2); 結果:
+---------------------+------------------+ | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) | +---------------------+------------------+ | 3.67 | 3.68 | +---------------------+------------------+
この場合、ROUND() 次の桁(8)のため、関数は数値を切り上げました )が5より大きい 。
TRUNCATE() 一方、関数は、指定された小数点以下の桁数を単純に切り捨てます。 TRUNCATE() 丸めは行いません。指定した場所で番号を切り落とすだけです。
どちらの関数も小数点以下の負の値を受け入れ、同じそれぞれのロジックが適用されます。
SELECT
TRUNCATE(36789, -2),
ROUND(36789, -2); 結果:
+---------------------+------------------+ | TRUNCATE(36789, -2) | ROUND(36789, -2) | +---------------------+------------------+ | 36700 | 36800 | +---------------------+------------------+
同じ結果
両方の関数が同じ結果を返す場合があります。それはすべて、渡される引数の値に依存します。
どちらも同じ結果を返す例を次に示します。
SELECT
TRUNCATE(3.6749, 2),
ROUND(3.6749, 2); 結果:
+---------------------+------------------+ | TRUNCATE(3.6749, 2) | ROUND(3.6749, 2) | +---------------------+------------------+ | 3.67 | 3.67 | +---------------------+------------------+
この場合、ROUND() 次の桁(4)のため、数値を切り上げませんでした )5未満でした 。したがって、両方の結果は同じです。
FLOOR() 機能
どちらの関数もFLOOR()とは異なります 関数。引数以下の最大の整数値を返します。 FLOOR() ROUND()のような2番目の引数を受け入れません およびTRUNCATE() 実行します(とにかく整数のみを返します)。