快乐的马克杯 · [SLG]天空度假村1.2 汉化版 - ...· 1 月前 · |
英姿勃勃的火柴 · MySQL 中提取 JSON ...· 3 月前 · |
冷冷的春卷 · 敏捷开发 - 牛国柱· 4 月前 · |
风流倜傥的台灯 · VBAconst数组 - CSDN文库· 5 月前 · |
爱运动的上铺 · 上海市发展和改革委员会关于车用汽、柴油价格的 ...· 6 月前 · |
舍入至最近的小数或整数
Y = round(
将
X
)
X
的每个元素四舍五入为最近的整数。在舍入机会均等的情况下,即有元素的十进制小数部分为
0.5
(在舍入误差内)时,
round
函数会偏离零四舍五入到最接近的具有更大幅值的整数。
将向量的元素四舍五入为保留 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
format
命令控制 MATLAB® 如何在命令行上显示数字。如果一个数组具有以当前格式无法显示的额外位数,则 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
函数返回正确答案。通过使用
format long
查看
x
(这会显示舍入为 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 =
创建一个有结值的小数向量,即小数部分为
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
将持续时间数组中的每个值舍入为最近的秒数。
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
—
输入数组
输入数组,指定为标量、向量、矩阵、多维数组、表或时间表。对于复数
X
,
round
会分开处理实部和虚部。
当将
round
与多个输入结合使用时,
X
必须为
single
、
double
、
table
或
timetable
。
round
将逻辑值和
X
的
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")
返回
3100
,它是具有
2
位有效位数的、最接近
3132
的数。
数据类型:
char
|
string
direction
—
结值处理方向
"fromzero"
(默认) |
"tozero"
|
"even"
|
"odd"
|
"plusinf"
|
"minusinf"
结值处理方向,指定为以下值之一:
"fromzero"
- 将结值朝偏离零的方向舍入到模更大的最接近的整数。
"tozero"
- 将结值朝零方向舍入到模更小的最接近的整数。
"even"
- 将结值舍入到最接近的偶数。
"odd"
- 将结值舍入到最接近的奇数。
"plusinf"
- 将结值朝正无穷大方向舍入到更大的最接近的整数。
"minusinf"
- 将结值朝负无穷大方向舍入到更小的最接近的整数。
结值很少见。在使用
round(X,N,TieBreaker=direction)
时,仅当
X * 10
N
在两个连续整数中间点的舍入误差内时(即
X * 10
N
的十进制小数部分为
0.5
(在舍入误差内)),才会出现结值。
示例:
round(2.015,2,TieBreaker="even")
t
—
输入持续时间
duration
数组
输入持续时间,指定为一个
duration
数组。
unit
—
时间单位
"seconds"
(默认) |
"minutes"
|
"hours"
|
"days"
|
"years"
时间单位,指定为
"seconds"
、
"minutes"
、
"hours"
、
"days"
或
"years"
。1 年的时间长度确切地等于 365.2425 天(一天 24 小时)。
数据类型:
char
|
string
format short
和
format long
都显示舍入后的数。与
round
函数结合使用时,此显示可能会导致意外结果。
出于显示的目的,请使用
sprintf
控制字符串形式的数值的准确显示方式。例如,要完全显示
pi
的 2 位小数(不带尾部零),请使用
sprintf("%.2f",pi)
。
此函数完全支持 tall 数组。有关详细信息,请参阅 tall 数组 。
用法说明和限制:
代码生成仅支持语法
Y = round(X)
。
用法说明和限制:
代码生成仅支持语法
Y = round(X)
。
backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™
ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅 在基于线程的环境中运行 MATLAB 函数 。
用法说明和限制:
不支持以下语法:
Y = round(X,N)
Y = round(X,N,type)
Y = round(___,TieBreaker=direction)
有关详细信息,请参阅 Run MATLAB Functions on a GPU (Parallel Computing Toolbox) 。
此函数完全支持分布式数组。有关详细信息,请参阅 Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox) 。
round
函数可以对表或时间表中的所有变量执行计算,而无需通过索引访问这些变量。所有变量都必须具有支持计算的数据类型。有关详细信息,请参阅
Direct Calculations on Tables and Timetables
。
使用
TieBreaker
名称-值参量指定如何处理结值。例如,
round(X,TieBreaker="tozero")
将结值朝零方向舍入。
round
返回一致的结值处理结果
从 R2022a 开始,默认情况下,
round
函数始终将结值朝偏离零的方向舍入为模更大的最接近的
10
—N
的倍数。例如:
X = 1.015:5.015; N = 2; Y = round(1.015:5.015,2) 1.0200 2.0200 3.0200 4.0200 5.0200
在以前的版本中,默认情况下,
round
函数有时会返回不一致的结值处理结果。例如,在前面的示例中,第二个和第三个元素分别朝零方向舍入为
2.01
和
3.01
。
R2014b 中添加了下列语法,从而可以舍入取整到任意小数位数或有效位数,还可以舍入持续时间值:
Y = round(X,N) Y = round(X,N,type) Y = round(t) Y = round(t,unit)
MATLAB ® 的早期版本只支持下面的语法,该语法舍入到最接近的整数:
Y = round(X)
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.