与许多其他帖子不同,我想找出为什么我的代码会自动向下舍入到最接近的整数?
在此处查看代码
double sixes = 200/3;
double threes = 100/3;
System.out.println("Sixes: " + sixes + "nThrees: " + threes);
请参阅此处的输出:
六人组:66.0
三分:33.0
这些应该分别是66.66666666666
和33.3333333333
,但我不确定为什么它们被四舍五入?
问题是你在数字后面加一个小数点,如果你不加它 是双数除以 int 而不是双除是双倍,这里的例子:
双除以 int :
double sixes = 200/3;
double threes = 100/3;
System.out.println("Sixes: " + sixes + "nThrees: " + threes);
输出:
Sixes: 66.0
Threes: 33.0
双除除以双倍:
double sixes = 200/3.0;
double threes = 100/3.0;
System.out.println("Sixes: " + sixes + "nThrees: " + threes);
输出:
Sixes: 66.66666666666667
Threes: 33.333333333333336
算法取决于最复杂的参数。您计算整数,因此使用生成整数作为输出的算法。最后,该整数被隐式转换为双精度以适合您的变量。
尝试double sixes = 200.0/3.0;
验证这一点。