【发布时间】:2017-04-15 09:01:47
【问题描述】:
下面的代码结果“39 44”作为输出。我在某处读到铸造在这里使用模数。我知道如何计算模数的基本方法,例如 10%3 = 1,但我仍然不知道它是如何计算的。
class conversion {
public static void main(String args[])
{
double a = 295.04;
int b = 300;
byte c = (byte) a;
byte d = (byte) b;
System.out.println(c + " " + d);
}
}
【问题讨论】:
-
Java 语言规范中精确定义了其工作原理:docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.3。并且不涉及模数。
-
嗯,错了。
-
@Shashwat:答案说结果是相同的好像
%被使用。那不是一回事。 “乘法是如何工作的”可以说乘法x * y的结果与开始一个 0 的总和并将x加到它y次......但这不是乘法在 CPU 中发生的方式。 -
另外,以 500 为例,您会发现模 128 的结果和强制转换的结果是不同的。