- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么模运算的结果 a % b
的类型与 a
相同,而不是 b
类型?
除法后的余数从不 将大于除数,因此结果的类型将适合除数的类型。所以在 a % b
中,结果将符合 b
的类型。
因此,如果 b
是一个 Int
,那么结果也应该是 Int
。为什么是 Long
?
例子:
val a: Long = Long.MaxValue
val b: Int = 10
a % b
结果:
a: Long = 9223372036854775807
b: Int = 10
res0: Long = 7
在 res0
中,我期待一个 Int
。
我在 Scala contributors 中问过同样的问题能够关注对话的论坛。
最佳答案
如评论中所述,Scala 在此遵循 Java。 Java 遵循 C。C 实际上有充分的理由!即:
它有独立的有符号和无符号类型;
a % b
的结果与 a
的符号相同(例如 -10 % 3
是 -1
)。 (这在旧的 C 版本中不是必需的,但总是允许的。)
所以如果上面的-10
是signed long
并且3
是unsigned int
,那么结果可以' t 与除数的类型相同,因为它必须是有符号的。它也不能是 signed int
,因为我们可以用适合 unsigned int
而不是 signed int 的东西代替
。应用与其他算术运算符相同的规则可提供合理的返回类型,这就是 C 所做的。3
关于java - 为什么模运算结果取被除数类型而不是除数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238999/
我遇到了一个问题,想要了解更多信息以及如何避免。我有这个代码 len :: (Num r ) => [a] -> r len [] = 0 len xs = 1 + len ( tail xs ) a
我知道如何找到给定整数(1 除外)的除数: let smallest_divisor n = let rec aux n i = if i 编辑添加:在平均情况下,第二种方法
这个问题已经有答案了: Why does integer division code give the wrong answer? [duplicate] (4 个回答) 已关闭去年。 在 Java
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26). scala> 1.0 / Doub
我的数据帧结构如下,x_L 和 x_R 对的数量可能最多为 100。 ID Side A_L A_R B_L B_R 1 0 7 5 6 3 2
我的数据帧结构如下,x_L 和 x_R 对的数量可能最多为 100。 ID Side A_L A_R B_L B_R 1 0 7 5 6 3 2
如何使用转换将数字列表除以 2?我以为这段代码可以做到,但它只将整个列表的数字 1 除以 2,所以我一定完全误解了这一点。有人能帮助我吗? :) list v(5, 1); list d; d.res
我目前正在研究如何使用各种现代处理器的快速单精度浮点倒数功能来计算基于定点 Newton-Raphson 迭代的 64 位无符号整数除法的起始近似值。它需要尽可能准确地计算 264/除数,其中初始近似
我是一名优秀的程序员,十分优秀!