Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 产生错误答案的浮动百分比_Java_Android - Fatal编程技术网

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,然后您将其用于除法或其他。对于百分比,一个很好的经验法则是:先乘后除。那样你会更准确。