【问题标题】:Print float with two decimals unless number is a mathematical integer打印带有两位小数的浮点数,除非数字是数学整数
【发布时间】:2020-09-28 12:54:37
【问题描述】:

如果值有小数,是否有一种简单的方法将浮点值打印为带小数的字符串,否则将其打印为不带小数的 int?

12.5 would print 12.50
15.0 would print 15

有没有简单的方法来做到这一点?我可以想到一些方法,包括将浮点数解析为字符串到整数,但它似乎不是最优的。

编辑:这个答案做我想做的事:Show decimal of a double only when needed

如果值只有一位小数,则此答案仅显示一位小数。我需要的是两位小数,或者什么都没有。

【问题讨论】:

  • 这能回答你的问题吗? Show decimal of a double only when needed
  • 我知道的方式(旧方式)是使用 DecimalFormat。我相信使用 printf 有一种更新的方法
  • @Milgo,我的反应有点快。不,它接近我需要的。如果该值有一位小数,则应显示两位小数。这种方式只显示一个。
  • 那你应该去Java Currency Number format

标签: java kotlin


【解决方案1】:

你可以使用String.format(),如果是.00,则去掉小数点removeSuffix()

fun Double.toMyFormat(): String =
    String.format("%.2f", this).removeSuffix(".00")

fun main() {
    println(12.5.toMyFormat())
    println(15.0.toMyFormat())
}

打印:

12.50
15

这也适用于四舍五入的数字,例如 12.999 等。

【讨论】:

  • @Reporter 是的。
  • 不错的一个班轮!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多