我想获得精确的计算值(在我的情况下它应该是66.66 ...而不是66.0)但它打印66.0
如果我得到66.66那么我可以使用Math.round(66.66)以便我得到67
执行后的代码应返回66.66,但返回66.0
param
请建议..
此致
答案 0 :(得分:3)
ip
执行整数乘法和除法,得到一个整数。
您需要通过将其中一个操作数更改为double(或float)来强制浮点计算:
(2*100)/3
答案 1 :(得分:1)
如其他答案所示,您可以提供至少一个浮点数。或者,如果您不想更改数字,可以将强制转换添加到分子
double d= (double)(2*100)/3;
System.out.println(d);
打印
66.66666666666667
答案 2 :(得分:0)
您在算术运算中使用所有int值,因此最终结果将始终为int,当您将其放入double时,它将变为66.0。但由于原始结果是int,所以你的精度会松散。
您可以使用double d = (2.0*100.0)/3.0;
或至少有一个小数点值,以便获得预期的小数点。
小数点后的数字通常称为精度。因此,您谈到的问题通常称为浮点不精确,在您的情况下,您可以将其称为双点不精确。
经验法则
答案 3 :(得分:0)
正如Eran所说,你的表达式执行整数运算,你需要像
那样执行 double d = (double) (2*100)/3;
如果需要格式化结果。