4.4.2整数运算

虽然许多数值计算不能用整数进行,但Octave确实支持对整数进行加法和乘法等基本运算。运算符+, -, .*./处理相同类型的整数。因此,可以将两个32位整数相加,但不能将32位整数和16位整数相加。

进行整数运算时,应考虑下溢和溢出的可能性。当计算的结果不能使用所选的整数类型表示时,就会发生这种情况。例如,不可能表示的结果10 - 20当使用无符号整数时。Octave确保整数计算的结果是最接近实数结果的整数。所以,结果是10 - 20当使用无符号整数时为零。

进行整数除法时,Octave会将结果四舍五入到最近的整数。这与大多数编程语言不同,在大多数编程语言中,结果通常被向下取整到最接近的整数。所以,结果int32 (5) ./ int32 (8)1.

 
C = idivide (A, B, op)

具有不同舍入规则的整数除法。

整数除法的标准行为,例如A ./ B是将结果四舍五入到最近的整数。这并不总是理想的行为,而idivide允许对除法的小数部分进行不同处理的整数按元素除法,op标志决定了如何处理,其中op是一个包含以下值的字符串:

"fix"

计算A ./ B时将小数部分四舍五入到零。

"round"

计算A ./ B时将小数部分四舍五入到最近的整数。

"floor"

计算A ./ B时将小数部分向下取整到负无穷大。

"ceil"

计算A ./ B时将小数部分向上取整到正无穷大。

如果op未给定它默认为"fix"。演示这些舍入规则的示例是

idivide (int8 ([-3, 3]), int8 (4), "fix")
  ⇒    0   0
idivide (int8 ([-3, 3]), int8 (4), "round")
  ⇒   -1   1
idivide (int8 ([-3, 3]), int8 (4), "floor")
  ⇒   -1   0
idivide (int8 ([-3, 3]), int8 (4), "ceil")
  ⇒    0   1

另请参阅: ceil, floor, fix, round, ldivide, rdivide.


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4