# round

## 语法

``Y = round(X)``
``Y = round(X,N)``
``Y = round(X,N,type)``
``Y = round(___,TieBreaker=direction)``
``Y = round(t)``
``Y = round(t,unit)``

## 说明

``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` 的每个元素四舍五入到指定单位时间的最接近的数。`

## 示例

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

`round(863178137,-2)`
```ans = 863178100 ```

`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` 函数结合使用时，此显示可能会导致意外结果。

```format short x = 112.05 - 110```
```x = 2.0500 ```

`y = round(x,1)`
```y = 2 ```

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

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

## 输入参数

`round` 将逻辑值和 `X``char` 元素转换为 `double` 值。

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

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

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

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

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

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

## 提示

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

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