双精度向下舍入到最接近整数的问题



与许多其他帖子不同,我想找出为什么我的代码会自动向下舍入到最接近的整数?

在此处查看代码

double sixes = 200/3;
double threes = 100/3;
System.out.println("Sixes: " + sixes + "nThrees: " + threes);

请参阅此处的输出:

六人组:66.0

三分:33.0

这些应该分别是66.6666666666633.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;验证这一点。

相关内容

  • 没有找到相关文章

最新更新