Main Content

round

最も近い小数または整数への丸め

説明

Y = round(X)X の各要素を最も近い整数に丸めます。要素が 10 進数で 0.5 (丸め誤差内) の小数部をもち、整数から等距離の値である場合、関数 round はゼロ方向とは反対の、より大きい絶対値をもつ最も近い整数に丸めます。

Y = round(X,N)N 桁に丸めます。

  • N > 0: 小数点の "右" を N 桁に丸めます。

  • N = 0: 最も近い整数に丸めます。

  • N < 0: 小数点の "左" を N 桁に丸めます。

Y = round(X,N,type) は丸めの種類を指定します。有効桁数 N 桁 (左端の桁からカウント) に丸めるには "significant" を指定します。この場合、N は正の整数でなければなりません。

Y = round(___,TieBreaker=direction) は、整数から等距離の値を direction の指定に従って丸めます。この引数は、前述の構文において任意の入力引数が組み合わされた後に使用します。

Y = round(t)duration 配列 t の各要素を最も近い秒数に丸めます。

Y = round(t,unit)t の各要素を指定された時間単位の最も近い数値に丸めます。

すべて折りたたむ

2 行 2 列の行列の要素を最も近い整数に丸めます。

X = [2.11 3.5; -3.5 0.78];
Y = round(X)
Y = 2×2

     2     4
    -4     1

pi を最も近い小数点以下 3 桁の数値に丸めます。

Y = round(pi,3)
Y = 3.1420

数値 863178137 を最も近い 100 の倍数に丸めます。

round(863178137,-2)
ans = 863178100

ベクトルの要素を有効桁数が 2 桁になるように丸めます。

X = [1253 1.345 120.44]
X = 1×3
103 ×

    1.2530    0.0013    0.1204

Y = round(X,2,"significant")
Y = 1×3
103 ×

    1.3000    0.0013    0.1200

MATLAB® のコマンド ラインでの数値の表示形式は format コマンドで制御します。数値の桁数が多いために現在の形式で表示できない場合、MATLAB では自動的にその数値を丸めて表示します。この表示は、関数 round と組み合わせると予期せぬ結果につながる場合があります。

5 桁が表示される、次の減算演算の結果について考えてみます。

format short
x = 112.05 - 110
x = 2.0500

表示された結果は 2.0500 であり、上の桁から等距離の値であるように見えます。しかし、浮動小数点演算の誤差のため、小数部 0.5 での等距離の値は丸め誤差内ではありません。

表示された x の値から、x を小数点以下 1 桁に丸めると 2.1 になるはずです。

y = round(x,1)
y = 2

この問題の原因は、MATLAB が表示の目的で x を 5 桁に丸めたことです。関数 round は正しい解を返しています。xformat long で表示して解を確認すると、15 桁に丸めた x が表示されます。

format long
x
x = 
   2.049999999999997

比較のため、丸め誤差内である等距離の値に対する丸めの結果と、丸め誤差内でない等距離の値に対する丸めの結果を示します。

x1 = 2.05
x1 = 
   2.050000000000000

y1 = round(x1,1)
y1 = 
   2.100000000000000

x2 = 2.05 - eps(2.05)
x2 = 
   2.049999999999999

y2 = round(x2,1)
y2 = 
     2

整数から等距離の値をもつ小数、つまり、0.5 (丸め誤差内) の小数部をもつ小数からなるベクトルを作成します。

X = -2.5:1:2.5
X = 1×6

   -2.5000   -1.5000   -0.5000    0.5000    1.5000    2.5000

整数から等距離の値を、最も近い偶数と奇数の整数に丸めます。

Yeven = round(X,TieBreaker="even")
Yeven = 1×6

    -2    -2     0     0     2     2

Yodd = round(X,TieBreaker="odd")
Yodd = 1×6

    -3    -1    -1     1     1     3

整数から等距離の値を、正と負の無限大方向に丸めます。

Yplusinf = round(X,TieBreaker="plusinf")
Yplusinf = 1×6

    -2    -1     0     1     2     3

Yminusinf = round(X,TieBreaker="minusinf")
Yminusinf = 1×6

    -3    -2    -1     0     1     2

整数から等距離の値を、ゼロの反対方向とゼロ方向に丸めます。

Yfromzero = round(X,TieBreaker="fromzero")
Yfromzero = 1×6

    -3    -2    -1     1     2     3

Ytozero = round(X,TieBreaker="tozero")
Ytozero = 1×6

    -2    -1     0     0     1     2

duration 配列の各値を最も近い秒数に丸めます。

t = hours(8) + minutes(29:31) + seconds(1.3:0.5:2.3);
t.Format = "hh:mm:ss.SS"
t = 1x3 duration
   08:29:01.30   08:30:01.80   08:31:02.30

Y1 = round(t)
Y1 = 1x3 duration
   08:29:01.00   08:30:02.00   08:31:02.00

t の各値を最も近い時間数に丸めます。

Y2 = round(t,"hours")
Y2 = 1x3 duration
   08:00:00.00   09:00:00.00   09:00:00.00

入力引数

すべて折りたたむ

入力配列。スカラー、ベクトル、行列または多次元配列として指定します。複素数の X については、round は実数部と虚数部を個別に扱います。

round に複数の入力を含める場合、Xsingle または double でなければなりません。

round は、X の logical 型および char 型の要素を double 型の値に変換します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | logical
複素数のサポート: あり

桁数。スカラー整数として指定します。N を指定した場合、関数 round(X,N)X を最も近い 10—N の倍数に丸めます。

丸めの種類を "significant" に指定する場合、N は正の整数でなければなりません。

丸めの種類。"decimals" または "significant" として指定します。丸めの種類により、round で桁数が小数点と総有効桁数のいずれに関連付けて扱われるかが決まります。"significant" を指定する場合、N は正の整数でなければなりません。その場合、関数 round は有効桁数が N 桁の最も近い数値に丸めます。

既定値は "decimals" で、round(X,N,"decimals")round(X,N) と等しくなります。

例: round(3132,2,"significant") は、2 桁の有効桁数をもつ 3132 に最も近い数値である 3100 を返します。

データ型: char | string

整数から等距離の値を丸める方向。次の値のいずれかとして指定します。

  • "fromzero" — ゼロ方向とは反対の、より大きい絶対値をもつ最も近い整数に丸めます。

  • "tozero" — ゼロ方向の、より小さい絶対値をもつ最も近い整数に丸めます。

  • "even" — 最も近い偶数の整数に丸めます。

  • "odd" — 最も近い奇数の整数に丸めます。

  • "plusinf" — 正の無限大方向に、より大きい値をもつ最も近い整数に丸めます。

  • "minusinf" — 負の無限大方向に、より小さい値をもつ最も近い整数に丸めます。

整数から等距離の値は稀です。round(X,N,TieBreaker=direction) を使用するとき、等距離の値は、X * 10N が 2 つの連続した整数の中間点の丸め誤差内にある場合にのみ発生します。つまり、X * 10N が 10 進数で 0.5 (丸め誤差内) の小数部をもつ場合です。

例: round(2.015,2,TieBreaker="even")

入力の期間。duration 配列として指定します。

時間の単位。"seconds""minutes""hours""days"、または "years" として指定します。1 日を 24 時間として、1 年は厳密に 365.2425 日です。

データ型: char | string

ヒント

  • format shortformat long はどちらも丸めた数値を表示します。この表示は、関数 round と組み合わせると予期せぬ結果の原因となることがあります。

  • 数値を正確に表示するには、sprintf を使用して string として表示します。たとえば、pi を厳密に小数点以下 2 桁まで (後ろにゼロを付けずに) 表示するには、sprintf("%.2f",pi) を使用します。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

R2022a での動作変更

参考

| |