【问题标题】:How to print a double with two decimals in Android? [duplicate]如何在Android中打印带有两位小数的双精度数? [复制]
【发布时间】:2011-12-25 07:01:29
【问题描述】:

也许这是一个愚蠢的问题,但如果不是创建方法,我无法猜测如何解决它。也许有一种“自然的方式”可以做到这一点,例如在 C 中。问题来了:

我有一个变量:

double a;

我只想用 2 或 3 位小数显示它。当我尝试展示它时:

Text.setText("Value of a: " + String.valueOf(a));

它给出了类似的东西:

a 的值:5.234966145

我只想

a 的值:5.23

在不改变 a 的实际值的情况下,它显示的是近似数,但适用于实数。

【问题讨论】:

  • doubleNumber.toString().substring(0, 3)
  • input?.let { if (input == "0" || input == "0.0") { return "0.00" } return try { val formatter = DecimalFormat("#,### ,###.00") formatter.format(input.toDouble()) } catch (e: Exception) { it } }

标签: android format double show settext


【解决方案1】:

对于显示最多两位小数的数字,有两种可能性 - 1)首先,你只想显示十进制数字,如果它在那里。 例如 - i) 12.10 显示为 12.1,ii) 12.00 显示为 12。然后使用 -

DecimalFormat formater = new DecimalFormat("#.##"); 

2) 其次,您希望显示十进制数字,而不管小数是否存在 例如 -i) 12.10 显示为 12.10。 ii) 12 显示为 12.00。然后使用-

DecimalFormat formater = new DecimalFormat("0.00"); 

【讨论】:

  • 这会将“0”格式化为“.00”。而是使用new DecimalFormat("0.00") 将“0”显示为“0.00”
【解决方案2】:
yourTextView.setText(String.format("Value of a: %.2f", a));

【讨论】:

  • 这会给出警告:“隐式使用默认语言环境是常见的错误来源:请改用 String.format(Locale, ...)”
  • @AndreKR 这是因为不同国家/地区使用的符号不同。即使您指定了正确的格式,如果您稍后解析它,您也必须这样做。如果你不这样做,那根本没关系,因为它使用设备的系统设置,无论如何你都应该使用它。
【解决方案3】:

使用这个:

DecimalFormat form = new DecimalFormat("0.00");
etToll.setText(form.format(tvTotalAmount) );

注意:数据必须是十进制格式(tvTotalAmount)

【讨论】:

    【解决方案4】:

    您可以使用DecimalFormatString.format("%.2f", a);

    【讨论】:

      【解决方案5】:

      在使用 DecimalFormat 之前,您需要使用以下导入,否则您的代码将无法正常工作:

      import java.text.DecimalFormat;
      

      格式化代码为:

      DecimalFormat precision = new DecimalFormat("0.00"); 
      // dblVariable is a number variable and not a String in this case
      txtTextField.setText(precision.format(dblVariable));
      

      【讨论】:

      • 您的代码显示四舍五入的值。比如调用precision.format(2.81666666)显示2.82...
      • 这是期望的行为,不是吗?
      【解决方案6】:
      textView2.setText(String.format("%.2f", result));
      

      DecimalFormat form = new DecimalFormat("0.00");
               textView2.setText(form.format(result) );
      

      ...在欧洲的语言环境中导致“NumberFormatException”错误,因为它将结果设置为逗号而不是小数点 - 将 textView 添加到 editText 中的数字时会发生错误。 这两种解决方案在美国和英国地区都运行良好。

      【讨论】:

        猜你喜欢
        • 2012-02-12
        • 1970-01-01
        • 2018-07-02
        • 1970-01-01
        • 2016-04-30
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        • 2011-08-08
        相关资源
        最近更新 更多