JAVA如何从double中删除尾随零

Wra*_*ath 44 java double zero trailing

例如,我需要5.0成为54.3000成为4.3.

Mar*_*zak 61

你应该用 DecimalFormat("0.#")


对于 4.3000

Double price = 4.3000;
DecimalFormat format = new DecimalFormat("0.#");
System.out.println(format.format(price));
Run Code Online (Sandbox Code Playgroud)

输出是:

4.3
Run Code Online (Sandbox Code Playgroud)

如果是5000,我们有

Double price = 5.000;
DecimalFormat format = new DecimalFormat("0.#");
System.out.println(format.format(price));
Run Code Online (Sandbox Code Playgroud)

输出是:

5
Run Code Online (Sandbox Code Playgroud)

  • 在`4.32`成为`4.3`的情况下失败了 (27认同)
  • @Chisko这个问题询问如何"删除尾随零". (8认同)
  • 这使得`5.0`成为'5`的情况失败了,因为它总是会在数字的末尾添加一个`.0`. (3认同)
  • double 类型实际上无法做到这一点。如果您愿意切换到 BigDecimal,[这里是解决方案](/sf/answers/789948841/)。 (3认同)
  • 感谢您的评论.现在我已经发现我应该使用0.#. (2认同)

son*_*ool 11

使用DecimalFormat

  double answer = 5.0;
   DecimalFormat df = new DecimalFormat("###.#");
  System.out.println(df.format(answer));
Run Code Online (Sandbox Code Playgroud)

  • 它确实这就是错误的原因...... (29认同)
  • 不会像5.000001那样绕过numnber (11认同)

das*_*hrb 6

使用格式字符串为“ 0.#”的DecimalFormat对象。

  • 在4.32变为4.3的情况下失败 (9认同)
  • @Karoly DecimalFormat df = new DecimalFormat("###.##"); df.setRoundingMode(RoundingMode.HALF_UP); System.err.println(df.format(4.325)); System.err.println(df.format(4.30)); System.err.println(df.format(4.00)); (2认同)
  • @dashrb OP 非常明确地表达了他想要什么。他想删除尾随的零。你明白“尾随”这个词的意思吗? (2认同)