Android 获取十进制数的结果

Android 获取十进制数的结果,android,decimal,Android,Decimal,我试着把两个整数除,得到一个十进制数 当我除以10/29时,我一直得到0的结果 我想要0.34 我的代码是: private int totalCount_Games; private int totalCount_Hints_Statistics; double avgHints; avgHints=totalCount_Hints_Statistics/totalCount_Games; 在Java中,当您将两个整数除时,结果是另一个整数 在您的情况下,10/29将导致您提到的0。如果要以

我试着把两个整数除,得到一个十进制数 当我除以10/29时,我一直得到0的结果 我想要0.34

我的代码是:

private int totalCount_Games;
private int totalCount_Hints_Statistics;
double avgHints;
avgHints=totalCount_Hints_Statistics/totalCount_Games;

在Java中,当您将两个整数除时,结果是另一个整数

在您的情况下,10/29将导致您提到的0。如果要以浮点数形式获得这些结果,请将上述两个整数更改为浮点双精度

在这种情况下,上述计算的结果将为0.34


附言:这是非常基本的。您应该在官方的java站点上进行更多的研究,以获取关于数据类型的文档。

上述代码将生成0.0,因为int/int始终是一个int,进一步将其类型转换为double,因此输出为0.0

使用以下代码,使用大小数进行舍入

    double totalCount_Games_double = totalCount_Games;
    double totalCount_Hints_Statistics_double = totalCount_Hints_Statistics;
    double value =  totalCount_Hints_Statistics/totalCount_Games_double;
    BigDecimal bd = new BigDecimal(value);
    bd = bd.setScale(2, RoundingMode.HALF_UP);

整数除法的结果是另一个整数,四舍五入。 在表达式部分将int转换为double(或float)将使除法发生在double而不是int上,请注意,这与将int除法的结果转换为double不同

int i = 5, b = 10;
double result = ((double)i)/((double)b);

结果是0.5

将1转换为双精度,以强制进行双精度除法,目前它是int除法,因此int resultint/int将始终生成int。您能否进一步解释一下,为什么您的答案不鼓励使用“工作代码”答案,因为它们没有解释如何解决问题。考虑更新你的答案来解释这个问题,以及它是如何解决这个问题的,这不仅有助于OP,而且会帮助其他有类似问题的人。请查看添加的解释