当前位置: 首页 > 面试题库 >

格式,在Java中,小数点后两位为2,小数点后为0

汪臻
2023-03-14
问题内容

我正在尝试将双精度数格式化为精确到小数点后2位(如果有分数),然后使用DecimalFormat将其截断

因此,我想取得下一个结果:

100.123 -> 100.12
100.12  -> 100.12
100.1   -> 100.10
100     -> 100

变体#1

DecimalFormat("#,##0.00")

100.1 -> 100.10
but
100   -> 100.00

变体#2

DecimalFormat("#,##0.##")

100   -> 100
but
100.1 -> 100.1

有什么想法可以选择我的情况吗?


问题答案:

我达到的唯一解决方案是使用 if语句在这里提到

public static boolean isInteger(BigDecimal bigDecimal) {
    int intVal = bigDecimal.intValue();
    return bigDecimal.compareTo(new BigDecimal(intVal)) == 0;
}

public static String myFormat(BigDecimal bigDecimal) {
    String formatPattern = isInteger(bigDecimal) ? "#,##0" : "#,##0.00";
    return new DecimalFormat(formatPattern).format(bigDecimal);
}

测试中

myFormat(new BigDecimal("100"));   // 100
myFormat(new BigDecimal("100.1")); // 100.10

如果有人知道更优雅的方式,请分享!



 类似资料:
  • 问题内容: 我想知道如何在不舍入原始数字的情况下输出带两位小数的数字。 例如: 我已经尝试过: 问题答案: 您要使用命令。 https://dev.mysql.com/doc/refman/8.0/zh-TW/mathematical- functions.html#function_truncate

  • 将双精度数字相乘,从输出中取小数点后两位 expectedRenewalAmount的输出是,那么我们如何用两个十进制数格式化上述输出 预期:

  • 我有一个,我希望将用户的输入限制为纯数字或小数最多2位的数字。 基本上,我要求的是一个价格输入。 我想避免做正则表达式。有办法做到吗?

  • 问题内容: 我已经阅读了很多stackoverflow问题,但似乎没有一个对我有用。我正在四舍五入。这是代码: 我得到的输出是:但我希望它是。我读到添加会有所帮助,但是如你所见,我没有设法使其工作。 输入和输出都必须是双倍是绝对必要的。 如果你更改上面代码的第4行并将其发布,那将是非常有用的帮助。 问题答案: 输出是 或如@Rufein所说 这也会为你做。

  • 我有一个类文件Nepokretnost。java中的构造函数如下所示: 此外,我还为每个类字段提供了带有列的TableView。我的问题是双字段“povrsina”。我想从TextField设置它。 我将名为txtPovrsina的TextField的内容发送给双变量: 然后将所有字段放入TableView: 一切都很好,但我想要一些我不知道如何设置的应用程序行为。现在,当我在TextField中

  • 我的工作代码如下: 它产生以下输出: 但是我的情节有两个问题我似乎无法解决: 即使我用pd.options.display.float_format = '{:.2f}格式裁剪文本显示,该图仍然显示14位小数。