このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
round
最も近い小数または整数への丸め
構文
説明
例
行列の要素を丸める
小数点以下を指定した桁数に丸める
最も近い 100 の倍数に丸める
指定した有効桁数に要素を丸める
ベクトルの要素を有効桁数が 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
は正しい解を返しています。x
を format 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 値を丸める
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
— 入力配列
スカラー | ベクトル | 行列 | 多次元配列 | table | timetable
入力配列。スカラー、ベクトル、行列、多次元配列、table または timetable として指定します。複素数の X
については、round
は実数部と虚数部を個別に扱います。
round
に複数の入力を含める場合、X
は single
、double
、table
、または timetable
でなければなりません。
round
は、X
の logical 型および char
型の要素を double
型の値に変換します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| logical
| table
| timetable
複素数のサポート: あり
N
— 桁数
スカラー整数
桁数。スカラー整数として指定します。N
を指定した場合、関数 round(X,N)
は X
を最も近い 10—N の倍数に丸めます。
丸めの種類を "significant"
に指定する場合、N
は正の整数でなければなりません。
type
— 丸めの種類
"decimals"
(既定値) | "significant"
丸めの種類。"decimals"
または "significant"
として指定します。丸めの種類により、round
で桁数が小数点と総有効桁数のいずれに関連付けて扱われるかが決まります。"significant"
を指定する場合、N
は正の整数でなければなりません。その場合、関数 round
は有効桁数が N
桁の最も近い数値に丸めます。
既定値は "decimals"
で、round(X,N,"decimals")
は round(X,N)
と等しくなります。
例: round(3132,2,"significant")
は、2
桁の有効桁数をもつ 3132
に最も近い数値である 3100
を返します。
データ型: char
| string
direction
— 整数から等距離の値を丸める方向
"fromzero"
(既定値) | "tozero"
| "even"
| "odd"
| "plusinf"
| "minusinf"
整数から等距離の値を丸める方向。次の値のいずれかとして指定します。
"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")
t
— 入力の期間
duration
配列
入力の期間。duration
配列として指定します。
unit
— 時間の単位
"seconds"
(既定値) | "minutes"
| "hours"
| "days"
| "years"
時間の単位。"seconds"
、"minutes"
、"hours"
、"days"
、または "years"
として指定します。1 日を 24 時間として、1 年は厳密に 365.2425 日です。
データ型: char
| string
ヒント
format short
とformat long
はどちらも丸めた数値を表示します。この表示は、関数round
と組み合わせると予期せぬ結果の原因となることがあります。数値を正確に表示するには、
sprintf
を使用して string として表示します。たとえば、pi
を厳密に小数点以下 2 桁まで (後ろにゼロを付けずに) 表示するには、sprintf("%.2f",pi)
を使用します。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を完全にサポートしています。詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
コード生成では構文
Y = round(X)
のみがサポートされます。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意事項および制限事項:
コード生成では構文
Y = round(X)
のみがサポートされます。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
次の構文はサポートされていません。
Y = round(X,N)
Y = round(X,N,type)
Y = round(___,TieBreaker=direction)
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入R2023a: table および timetable で直接計算を実行
関数 round
は、table または timetable 内のすべての変数に対して、それらの変数にアクセスするためのインデックス付けを行うことなく計算できます。すべての変数のデータ型で計算がサポートされている必要があります。詳細については、table および timetable での直接計算を参照してください。
R2022a: 等距離にある値の丸め動作の制御
名前と値の引数 TieBreaker
を使用して、整数から等距離にある値を丸める方法を指定します。たとえば、round(X,TieBreaker="tozero")
は等距離にある値をゼロ方向に丸めます。
R2022a: round
は整数から等距離の値に一貫した結果を返す
R2022a 以降、既定で、関数 round
は整数から等距離の値を必ずゼロとは反対方向の、より大きい絶対値をもつ最も近い 10—N の倍数に丸めます。以下に例を示します。
X = 1.015:5.015; N = 2; Y = round(1.015:5.015,2)
Y = 1.0200 2.0200 3.0200 4.0200 5.0200
従来のリリースでは、関数 round
は既定で、等距離にある値に対し不整合な結果を返すことがありました。たとえば前の例では、2 つ目と 3 つ目の要素はゼロ方向にそれぞれ 2.01
と 3.01
に丸められていました。
R2014b: 指定した桁数への丸め
R2014b では、任意の小数点以下桁数および有効桁数に丸めたり、duration 値を丸めるために次の構文が追加されました。
Y = round(X,N) Y = round(X,N,type) Y = round(t) Y = round(t,unit)
それ以前のバージョンの MATLAB® では、最も近い整数に丸める次の構文のみがサポートされます。
Y = round(X)
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)