【问题标题】:Android java code to remove recurring zeros from 3rd place after decimal pointAndroid java代码从小数点后第三位删除重复的零
【发布时间】:2018-02-11 18:35:47
【问题描述】:

以下是检查数字是整数还是小数并相应显示结果的 Java 代码:

if (result % 1 == 0) {
    String finalResultString = String.format("%.0f", result); 
} else {
    BigDecimal decimalResult = new BigDecimal(result);
    String resultString = String.format("%.15f", decimalResult);
}

但在小数部分:

1) 如果我运行 66%6,我得到 3.960000000000000,但我希望答案仅为 3.96。所以我不希望显示不必要的零。

2) 如果我运行 99 x 65.00055,我希望答案是小数点后 15 位,例如 6435.054450000000543

所以问题是 - 我不希望零取决于前导数字。就像结果是 5.645345600000000 或 3.960000000000000 一样,我希望结果是 5.6453456 或 3.96。如果结果是 6435.054450000000540,我希望显示结果中的 14 位精度,因为我不希望显示最后一个不必要的零。如果结果是 6435.000000000000003,我希望显示所有 15 位精度,因为末尾没有不必要的零

有人可以帮忙吗?

提前致谢

【问题讨论】:

  • 提示:"%.15f" 中的 15 是什么意思?
  • @JoeC,我已经更新了这个问题。我希望答案是 15 位小数,所以我不能做“%.2f”。但在第一种情况下,我不需要不必要的零
  • “我希望答案为小数点后 15 位”和“我希望答案仅为 3.96”不同意。要么你想要小数点之后的 15 个位置,要么你想要没有额外零的自然数量的位置。是哪个?
  • @CommonsWare,我都想要。这不是可能通过一些 if-else 条件吗?还是一些正则表达式?只是问是否可能
  • “这不是可能通过一些 if-else 条件吗?” ——可能。你需要想出if 的规则。您引用了两个示例(这两个示例在数学上似乎都不正确,但这是另一回事)。浮点数有无数个,因此我们无法轻易确定您的规则是什么。例如,您的规则是“我想要前导数字为 6 的数字的小数点后 15 个位置”吗?

标签: java android regex decimal


【解决方案1】:

你可以设置小数位数为2:

decimalResult = decimalResult.setScale(2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2021-06-20
    相关资源
    最近更新 更多