[英]java- issue in getting correct value with decimal
我正在尝试获取准确的计算值(在我的情况下应该是66.66 ...而不是66.0),但它会打印66.0
如果我会得到66.66,则可以使用Math.round(66.66)来获得67
执行后的以下代码应返回66.66,但返回66.0
double d = (2*100)/3
请建议..
问候
(2*100)/3
执行整数乘法和除法,得到整数。
您需要通过将操作数之一更改为double(或float)来强制进行浮点计算:
double d = (2.0*100)/3
如其他答案所建议,您可以提供至少一个浮点数。 或者,如果您不想更改数字,则可以将强制转换添加到分子
double d= (double)(2*100)/3;
System.out.println(d);
版画
66.66666666666667
您在算术运算中使用了所有int值,因此最终结果将始终为int,并且将其放入double时,它将变为66.0。 但是由于原始结果是int,所以您会失去精度。
您可以使用double d = (2.0*100.0)/3.0;
或至少有一个带小数点的值,以便可以获取期望的小数点。
小数点后的数字通常称为精度 。 因此,您所讨论的问题通常称为浮点不精确度 ,在您的情况下,您可以将其称为双点不精确度。
经验法则:
正如Eran所说,这是您的表达式执行整数运算,您需要像
double d = (double) (2*100)/3;
如果需要格式化结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.