我正在尝试将双精度数格式化为精确到小数点后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位小数。