【发布时间】: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