格式化双精度字符串时不使用科学计数法

时间:2020-10-01 18:55:51

标签: java string formatting double bigdecimal

我有双重。 double foo = 123456789.1234;。我想将foo转换为字符串。 String str = foo+"";。但是现在foo等于“ 1.234567891234E8”。有没有一种方法可以将foo转换为没有科学符号的字符串? 我尝试过

String str = String.format("%.0f", foo);

但这只是删除小数点。它将str设置为“ 123456789”; 我尝试过

String str = (new BigDecimal(foo))+"";

但是,这会失去准确性。将str设置为“ 123456789.1234000027179718017578125”;

1 个答案:

答案 0 :(得分:1)

仅使用%f而不是%.0f

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        double foo = 123456789.1234;
        String str = String.format("%f", foo);
        System.out.println(str);

        // If you want to get rid of the trailing zeros
        str = new BigDecimal(str).stripTrailingZeros().toString();
        System.out.println(str);
    }
}

输出:

123456789.123400
123456789.1234