如何从字符串中删除尾随零?

时间:2013-06-07 12:43:26

标签: java string

我有一个字符串salePrice,其值可以是29.90000,91.01000,我想得到像29.90,91.01这样的输出和小数点后的两位数。我正在使用一个字符串。

6 个答案:

答案 0 :(得分:14)

可能的解决方案之一

new BigDecimal("29.90000").setScale(2).toString()

或者如果你需要围绕

new BigDecimal("29.90100").setScale(2, RoundingMode.HALF_UP).toString()

使用BigDecimal,因为从String转换为double会丢失精度!

选择适合您情况的舍入模式。

答案 1 :(得分:8)

试试这个......

DecimalFormat df2 = new DecimalFormat( "#,###,###,###.##" );
double dd = 100.2397;
double dd2dec = new Double(df2.format(dd)).doubleValue();

答案 2 :(得分:5)

int lastIndex = salePrice.indexOf(".") + 2
salePrice = salePrice.substring(0, lastIndex);

答案 3 :(得分:2)

你可以使用

String.format("%.2f", value);

答案 4 :(得分:1)

您可以使用Apache Commons Mathematics Library

    NumberFormat nf = NumberFormat.getInstance();
    nf.setMinimumFractionDigits(2);
    nf.setMaximumFractionDigits(2);
    ComplexFormat cf = new ComplexFormat(nf);
    Complex complex = cf.parse("29.90000");

答案 5 :(得分:0)

这是一个符合你问题的老派方式(你总是想要2位小数)

public class LearnTrim
{
    public static void main(final String[] arguments)
    {
        String value1 = "908.0100";
        String value2 = "876.1";
        String value3 = "101";
        String value4 = "75.75";
        String value5 = "31.";

        System.out.println(value1 + " => " + trimmy(value1));
        System.out.println(value2 + " => " + trimmy(value2));
        System.out.println(value3 + " => " + trimmy(value3));
        System.out.println(value4 + " => " + trimmy(value4));
        System.out.println(value5 + " => " + trimmy(value5));
    }

    private static String trimmy(final String value)
    {
        int decimalIndex;
        String returnValue;
        int valueLength = value.length(); // use StringUtils.length() for null safety.

        decimalIndex = value.indexOf('.');
        if (decimalIndex != -1)
        {
            if (decimalIndex < (valueLength - 3))
            {
                returnValue = value.substring(0, valueLength - 2);
            }
            else if (decimalIndex == (valueLength - 3))
            {
                returnValue = value;
            }
            else if (decimalIndex == (valueLength - 2))
            {
                returnValue = value + "0";
            }
            else // decimalIndex == valueLength - 1
            {
                returnValue = value + "00";
            }
        }
        else
        {
            returnValue = value + ".00";
        }

        return returnValue;
    }
}