仅在需要时显示双精度的小数

Big*_*low 27 java double android decimal string-formatting

我用double(小数)得到了这个问题.
当double = 1.234567然后我用,String.format("%.3f", myString);
所以结果是1.234

但当我的双倍是10
结果将是10,000
我希望这是10

他们是否可以说他只需要在"有用"时显示小数?

我看到一些关于这个的帖子,但那是php或c#,找不到关于android/java的东西(也许我看起来不太好).

希望你们能帮我解决这个问题.

编辑,现在我使用这样的东西:myString.replace(",000", "");
但我认为他们是一个更"友好"的代码.

jol*_*ier 81

带#参数的DecimalFormat是要走的路:

public static void main(String[] args) {

        double d1 = 1.234567;
        double d2 = 2;
        NumberFormat nf = new DecimalFormat("##.###");
        System.out.println(nf.format(d1));
        System.out.println(nf.format(d2));
    }
Run Code Online (Sandbox Code Playgroud)

会导致

1.235
2
Run Code Online (Sandbox Code Playgroud)

  • 是的,它确实."." 我给DecimalFormat作为参数并不意味着"写一个点",它意味着"写小数点分隔符或货币小数点分隔符"参见https://docs.oracle.com/javase/7/docs/api/java/text /DecimalFormat.html.我只是通过在函数开头将默认语言环境设置为法语来测试,并且正如预期的那样,点在输出中被comas有效替换. (3认同)
  • 你是对的,对不起,我的错误。此代码根据用户的区域设置正确设置小数分隔符的格式。此代码也适用于我:NumberFormat.getNumberInstance().format(power))。它只是不允许设置精度。 (2认同)