【问题标题】:Java Remove Trailing 0sJava 删除尾随 0
【发布时间】:2020-07-23 22:59:52
【问题描述】:

我想知道如何在我的 java 程序中从整数中删除尾随 0 例如: 100.0 -> 100 但是,对于像 1285.71 保持不变。

我只需要从整数中删除尾随的 0,同时仍保留双精度值。 我试过了:

    double s = x / y;
    String pattern = "0.#";

    DecimalFormat decimalFormat = new DecimalFormat(pattern);
    System.out.println(decimalFormat.format(Double.valueOf(s)) );

但是,它不起作用,我仍然在整数 (100.0) 后得到烦人的 0 任何帮助或见解将不胜感激,为您的时间欢呼。

【问题讨论】:

  • 这能回答你的问题吗? Remove trailing zero in Java
  • 不,我已经看过了,但它不起作用
  • 以上代码对我有用。我给了 s =100.0。它打印输出为 100
  • 它可以从 100 中删除多余的 0,但在需要时仍会删除小数位,例如 1285.71 被放回 1285,这是我不想要的@JobyWilsonMathews
  • 对我来说。案例 1:s=100.0,输出 = 100。案例 2:s=1285.71,输出 =1285.7(如果我将模式指定为“0.##”,则输出 = 1285.71)

标签: java trailing


【解决方案1】:

因为您使用DecimalFormat 来表示您的数字,所以关于该模式有几点需要记住:

  • 0 - 如果提供,则打印一个数字,否则为 0
  • # - 如果提供,则打印一个数字,否则不打印
  • . – 指明放置小数点分隔符的位置
  • , - 指明分组分隔符的放置位置

整数部分永远不会被丢弃。如果您提供这样的模式:"0.#",那么它将输出前缀和后缀中的第一个数字(如果它不为零)。例如,12345.5 会输出相同的结果,但 12345.0 会输出 12345。

如果您在后缀后面的数字超过您提供的后缀模式的数量,那么这些数字将被丢弃,例如您的模式是0.#",您的输入是 123.45,那么输出将是 123.4。

然后您可以将您的模式更改为 "0.##" 以使其适用于 100.0 和 1285.71

【讨论】:

    猜你喜欢
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 2012-11-03
    • 2011-05-30
    相关资源
    最近更新 更多