mars.tensor.round_#

mars.tensor.round_(a, decimals=0, out=None)#

均匀地四舍五入到给定的小数位数。

Parameters
  • a (array_like) – 输入数据。

  • decimals (int, 可选) – 要舍入到的小数位数(默认:0)。 如果decimals为负,则指定小数点左侧的位置数。

  • out (Tensor, 可选) – 备用输出张量,用于放置结果。它必须具有与预期输出相同的形状,但输出值的类型在必要时将被转换。

Returns

rounded_array – 一个与 a 相同类型的张量,包含四舍五入的值。 除非指定了 out,否则会创建一个新的张量。返回结果的引用。

复数的实部和虚部分别进行四舍五入。四舍五入浮点数的结果是浮点数。

Return type

张量

另请参阅

Tensor.round

等效方法

ceil, fix, floor, rint, trunc

备注

对于恰好位于四舍五入十进制值中间的值,NumPy 四舍五入到最近的偶数值。因此,1.5 和 2.5 四舍五入为 2.0, -0.5 和 0.5 四舍五入为 0.0,等等。由于 IEEE 浮点标准中十进制分数的不精确表示以及在按十的幂缩放时引入的 错误,结果也可能令人惊讶。1

参考文献

1

“关于 IEEE 754 状态的讲义”,威廉·卡汉, http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF

2

“浮点计算中无意义的舍入评估有多么徒劳?”威廉·卡汉,http://www.cs.berkeley.edu/~wkahan/Mindless.pdf

示例

>>> import mars.tensor as mt
>>> mt.around([0.37, 1.64]).execute()
array([ 0.,  2.])
>>> mt.around([0.37, 1.64], decimals=1).execute()
array([ 0.4,  1.6])
>>> mt.around([.5, 1.5, 2.5, 3.5, 4.5]).execute() # rounds to nearest even value
array([ 0.,  2.,  2.,  4.,  4.])
>>> mt.around([1,2,3,11], decimals=1).execute() # tensor of ints is returned
array([ 1,  2,  3, 11])
>>> mt.around([1,2,3,11], decimals=-1).execute()
array([ 0,  0,  0, 10])