【问题标题】:Decimal point issue in displaying digits显示数字时的小数点问题
【发布时间】:2021-04-15 06:31:40
【问题描述】:

我必须以两位小数显示数字。

假设值 0 应显示为 0.00,值 2.3 应显示为 2.30。

为了实现这一点,我做了如下的事情:

Log.e(">>> percent ", ">> " + data.percent)
percent = String.format("%.2f", percent).toDouble()
Log.e(">>> percent ", ">> " + percent)

但是你会注意到的结果如下:

2021-04-15 11:55:54.580 10061-15047/com.dev E/>>> percent: >> 0
2021-04-15 11:55:54.580 10061-15047/com.dev E/>>> percent: >> 0.0

应该是 0.00 而不是 0.0

可能是什么问题? 请指导。谢谢。

【问题讨论】:

    标签: android kotlin decimal decimalformat decimal-point


    【解决方案1】:

    Double 类型没有关于如何显示的信息。

    所以,不要对字符串使用toDouble() 方法。 此外,在格式字符串中添加0 以表示零填充。

    Log.e(">>> percent ", ">> " + data.percent)
    val percentStr: String = String.format("%.02f", data.percent)
    Log.e(">>> percent ", ">> " + percentStr)
    

    【讨论】:

    • 如果我们想要 1 个小数,那么我们必须使用 %.01f 或 %1f ?
    • %.1f 表示最多一位十进制数字,但应省略结尾的十进制零。 %.01f 表示恰好一位十进制数字,并使用了 1 等于 1.0 的事实。
    • 我已将其更改为“%.02f”,仍然得到 0.0 而不是 0.00 ....
    • 您是否删除了最后的toDouble() 并打印了新创建的字符串,而不是原来的percent
    • 试试这样:percent = String.format("%.2f", percent.toDouble())
    【解决方案2】:

    您可以使用 DecimalFormat https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

    val df = DecimalFormat("0.00")

    df.format(百分比)

    【讨论】:

      【解决方案3】:

      只是改变

      String.format("%.2f", percent).toDouble()
      

      String.format("%.02f", data.percent)
      

      【讨论】:

        猜你喜欢
        • 2013-06-08
        • 2011-10-21
        • 2019-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 1970-01-01
        • 2015-05-25
        相关资源
        最近更新 更多