【问题标题】:getting result of decimal number获取十进制数的结果
【发布时间】:2017-09-19 16:48:47
【问题描述】:

我正在尝试将两个整数相除并得到一个十进制数 当我除以 10/29 时,我一直得到 0 结果 我想得到 0.34

我的代码是:

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

【问题讨论】:

标签: android decimal


【解决方案1】:

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

在您的情况下,如您所述,10/29 将导致 0。如果你想得到这些浮点数的结果,那么把上面的两个整数改成float或者double

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

PS:这真的很基本。您应该在官方 java 网站上进行更多研究,以获取有关数据类型的文档。

【讨论】:

    【解决方案2】:

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

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

    结果是 0.5

    【讨论】:

    • 你能解释一下为什么你的答案有效吗
    • 不鼓励仅使用代码的答案,因为它们没有解释如何解决问题中的问题。考虑更新您的答案以解释它的作用以及它如何解决问题 - 这不仅有助于 OP,还有助于其他有类似问题的人。请查看How do I write a good answer
    • 添加说明
    【解决方案3】:

    上面的代码将产生 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      • 2017-03-15
      • 2021-09-09
      • 2011-12-08
      相关资源
      最近更新 更多