【问题标题】:Java format double to string with minimal precision [duplicate]Java格式双精度最低的字符串[重复]
【发布时间】:2015-10-14 22:29:56
【问题描述】:

如何以最小精度以格式化字符串打印双精度值?示例:

double v = 2.02;
String.format("%f", v);

默认%f 格式总是打印6 digits after point => "2.020000"。我需要的是

42.0  => "42"
2.02  => "2.02"
0.3333333333333333 => "0.3333333333333333"

到目前为止我能得到的最好的结果是String.valueOf(v)

String.format("%s", String.valueOf(v));

通过除“42”之外的所有测试。关于完成所有三个测试的简单方法有什么想法吗?

【问题讨论】:

    标签: java formatting double precision


    【解决方案1】:

    正如 Yassin 所指出的,有一种自定义格式的 ggod 方式:

    public static String fmt(double d)
    {
        if(d == (long) d)
            return String.format("%d",(long)d);
        else
            return String.format("%s",d);
    }
    

    【讨论】:

    • String.format("%s",d)???谈论不必要的开销。使用Double.toString(d)。另一个也一样:Long.toString((long)d).
    猜你喜欢
    • 2012-08-25
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2017-10-06
    • 2014-01-06
    • 1970-01-01
    相关资源
    最近更新 更多