Java 产生错误答案的浮动百分比
给出输出:Java 产生错误答案的浮动百分比,java,android,Java,Android,给出输出: System.out.println("Percentage (90): " + (_leftBranch.getHeight() / 100) * 90 + " Height: " + _leftBranch.getHeight()); 实际上应该是323.1 有谁能告诉我这里发生了什么事吗?你可以用 Percentage (90): 270 Height: 359 或 或者如果溢出是一个问题 x * 9 / 10 如果您希望得到十进制结果,您可以这样做 x - x / 10
System.out.println("Percentage (90): " + (_leftBranch.getHeight() / 100) * 90 + " Height: " + _leftBranch.getHeight());
实际上应该是323.1
有谁能告诉我这里发生了什么事吗?你可以用
Percentage (90): 270 Height: 359
或
或者如果溢出是一个问题
x * 9 / 10
如果您希望得到十进制结果,您可以这样做
x - x / 10
或
你按90%计算
Percentage (90): 270 Height: 359
或
或者如果溢出是一个问题
x * 9 / 10
如果您希望得到十进制结果,您可以这样做
x - x / 10
或
将
/
除以两个整数也将返回整数(除法的剩余部分将被忽略)
尝试(_leftBranch.getHeight()/100d)*90
以获得更好的结果。除以/
两个整数也将返回整数(除法的剩余部分将被忽略)
尝试(_leftBranch.getHeight()/100d)*90以获得更好的结果。因为计算是以整数类型完成的
将100.0和90.0替换为100和90
第一部分计算结果见3.59。但它只考虑整数部分,即3,因此结果为270,因为计算是以整数类型进行的
将100.0和90.0替换为100和90
第一部分计算结果见3.59。但它只考虑整数部分,即3,因此结果270您可以尝试以下操作
x * 0.90
你可以试试下面
x * 0.90
你可以试试这个-
System.out.println("Percentage (90): " + (_leftBranch.getHeight() / 100.0) * 90.0 + " Height: " + _leftBranch.getHeight());
你可以试试这个-
System.out.println("Percentage (90): " + (_leftBranch.getHeight() / 100.0) * 90.0 + " Height: " + _leftBranch.getHeight());
除法前转换为双精度,或除以100.0当你除法两个整数时,剩下的整数是:359/100=3,3*90=270,Peter Lawrey的答案说明了如何使用小数。谢谢大家在这里学到了重要的一课。我认为这些数字会自动变成浮点数,显然编译器没有那么聪明。这是有意的。确切地说,您不希望在分割时不经意地得到一个浮点数。如果你告诉编译器你想要一个int,那就是你得到的。你需要小心你的数字。特别是当整数除法呈现一个零时,比如9/10,然后您将其用于除法或其他。对于百分比,一个很好的经验法则是:先乘后除。这样可以获得更高的精度。除法前转换为double,或除以100.0当你除法两个整数时,剩下的整数是:359/100=3,3*90=270,Peter Lawrey的答案说明了如何使用小数。感谢大家在这里学到了重要的一课。我认为这些数字会自动变成浮点数,显然编译器没有那么聪明。这是有意的。确切地说,您不希望在分割时不经意地得到一个浮点数。如果你告诉编译器你想要一个int,那就是你得到的。你需要小心你的数字。特别是当整数除法呈现一个零时,比如9/10,然后您将其用于除法或其他。对于百分比,一个很好的经验法则是:先乘后除。那样你会更准确。