Main Content

round

舍入至最近的小数或整数

说明

示例

Y = round(X)X 的每个元素四舍五入为最近的整数。在对等情况下,即有元素的十进制小数部分为 0.5(在舍入误差内)时,round 函数会偏离零四舍五入到最接近的具有更大幅值的整数。

示例

Y = round(X,N) 四舍五入到 N 位数:

  • N > 0:舍入到小数点右侧的第 N 位数。

  • N = 0:四舍五入到最接近的整数。

  • N < 0:舍入到小数点左侧的第 N 位数。

示例

Y = round(X,N,type) 指定四舍五入的类型。指定 "significant" 以四舍五入为 N 位有效数(从最左位数开始计数)。在此情况下,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

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 = 
     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

将持续时间数组中的每个值舍入为最近的秒数。

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

输入参数

全部折叠

输入数组,指定为标量、向量、矩阵或多维数组。对于复数 Xround 会分开处理实部和虚部。

当将 round 与多个输入结合使用时,X 必须为 singledouble

round 将逻辑值和 Xchar 元素转换为 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") 返回 3100,它是具有 2 位有效位数的、最接近 3132 的数。

数据类型: char | string

结值处理方向,指定为以下值之一:

  • "fromzero" - 将结值朝偏离零的方向舍入到模更大的最接近的整数。

  • "tozero" - 将结值朝零方向舍入到模更小的最接近的整数。

  • "even" - 将结值舍入到最接近的偶数。

  • "odd" - 将结值舍入到最接近的奇数。

  • "plusinf" - 将结值朝正无穷大方向舍入到更大的最接近的整数。

  • "minusinf" - 将结值朝负无穷大方向舍入到更小的最接近的整数。

结值很少见。在使用 round(X,N,TieBreaker=direction) 时,仅当 X * 10N 在两个连续整数中间点的舍入误差内时(即 X * 10N 的十进制小数部分为 0.5(在舍入误差内)),才会出现结值。

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

输入持续时间,指定为一个 duration 数组。

时间单位,指定为 "seconds""minutes""hours""days""years"。1 年的时间长度确切地等于 365.2425 天(一天 24 小时)。

数据类型: char | string

提示

  • format shortformat long 都显示舍入后的数。与 round 函数结合使用时,此显示可能会导致意外结果。

  • 出于显示的目的,请使用 sprintf 控制字符串形式的数值的准确显示方式。例如,要完全显示 pi 的 2 位小数(不带尾部零),请使用 sprintf("%.2f",pi)

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| |