在Java中从BigDecimal移除尾随零

我需要从去除尾随零BigDecimal沿RoundingMode.HALF_UP例如,

Value        Output

15.3456  <=> 15.35
15.999   <=> 16            //No trailing zeros.
15.99    <=> 15.99
15.0051  <=> 15.01
15.0001  <=> 15           //No trailing zeros.
15.000000<=> 15           //No trailing zeros.
15.00    <=> 15           //No trailing zeros.

stripTrailingZeros() 可以,但是在诸如以下情况下会返回科学计数法,

new BigDecimal("600.0").setScale(2, RoundingMode.HALF_UP).stripTrailingZeros();

在这种情况下,它返回6E+2我需要在JSF中的自定义转换器中使用它,这对于最终用户可能很难看。那么,这样做的正确方法是什么?

阿德里安·亚当奇(Adrian Adamczyk)

使用 toPlainString()

BigDecimal d = new BigDecimal("600.0").setScale(2, RoundingMode.HALF_UP).stripTrailingZeros();
System.out.println(d.toPlainString()); // Printed 600 for me

我还不喜欢JSF,但是转换器可能看起来像这样:

@FacesConverter("bigDecimalPlainDisplay")
public class BigDecimalDisplayConverter implements Converter {
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        throw new BigDecimal(value);
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        BigDecimal  bd = (BigDecimal)value;
        return bd.setScale(2, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
    }
}

然后在xhtml中:

<h:inputText id="bigDecimalView" value="#{bigDecimalObject}" 
    size="20" required="true" label="Value">
    <f:converter converterId="bigDecimalPlainDisplay" />
</h:inputText>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

java double 到 BigDecimal 的转换添加额外的尾随零

来自分类Dev

MySQL / Spring环境中的BigDecimal标度和尾随零

来自分类Dev

处理BigDecimal尾随零的Ruby

来自分类Dev

Java中阶乘中的数字尾随零

来自分类Dev

从输出中删除尾随零

来自分类Dev

Java中的反转数字。前导零和尾随零将不会显示

来自分类Dev

Java:在BigDecimal中删除小数点后的零

来自分类Dev

抑制R中输出整数的尾随零

来自分类Dev

c中阶乘的尾随零数

来自分类Dev

如何从datediff结果中删除尾随零?

来自分类Dev

在Excel 2010中自动显示尾随零

来自分类Dev

DateTime从毫秒中删除尾随零

来自分类Dev

通过在Java中移除前导零缩短十六进制数

来自分类Dev

从字符串中删除前导零和尾随零

来自分类Dev

为什么BigDecimal.stripTrailingZeros()不能始终删除所有尾随零?

来自分类Dev

TreeMap 将 BigDecimal 键放在小数点后尾随零无效

来自分类Dev

Java Regex使用空格去除前导和尾随零

来自分类Dev

SPOJ(JAVA)的尾随零数错误答案

来自分类Dev

Java-如何获取输出以显示双精度尾随零?

来自分类Dev

在PostgreSQL中按货币类型排序:尾随零

来自分类Dev

从双精度中删除十进制后的尾随零

来自分类Dev

从十进制中删除尾随零的最佳方法

来自分类Dev

删除Python列表中的所有尾随零

来自分类Dev

如何从二进制数中删除尾随零

来自分类Dev

从货币字符串android中删除尾随零

来自分类Dev

如何阻止pyspark中的时间戳掉落尾随零

来自分类Dev

如何在matlab中删除十进制尾随零

来自分类Dev

在Stata中以字符串格式尾随零

来自分类Dev

对齐方式与指针中尾随零的数量有何关系?

Related 相关文章

热门标签

归档