【问题标题】:How return only two decimals with float? [duplicate]如何用浮点数只返回两位小数? [复制]
【发布时间】:2013-11-25 10:52:09
【问题描述】:

我有一个浮点值,我只需要在逗号后有两位小数。我正在使用此代码:

public static float getWhatINeed() {
  StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath());
  float total = 
      ((float)statFs.getBlockCount() * statFs.getBlockSize()) / (1073741824);
  return total;
}

它在文本视图中返回例如:12.552425。我需要显示类似:12.55 这对我来说已经足够了。我看到了这个:

String s = String.format("%.2f", 1.2975118);

在某个地方,但我不能在我的情况下使用它,因为我使用浮点值并且我需要使用浮点数。我该如何解决这个问题?

【问题讨论】:

标签: java android string decimal


【解决方案1】:

没有机制可以限制float 中的小数点数。 floatfloat 并且它具有“无限”的小数位数。 floatString 显示可能仅限于仅显示特定小数位数的格式。

如果您真的需要 2 位小数,请使用 BigDecimal

你基本上有4个选择:

  • 返回一个float并处理有n位小数的事实
  • 格式化为String(如果您需要进行计算,这意味着需要大量的字符串解析)
  • 转换为使用BigDecimal
  • 转换为使用int 并假设个位代表百分之一。

【讨论】:

  • 最佳解决方案,谢谢
【解决方案2】:

你试过了吗:

new DecimalFormat("00.00").format(1.2975118);

【讨论】:

    【解决方案3】:

    你可以尝试如下

     DecimalFormat df = new DecimalFormat("0.##");
        float a=1.256f;
        System.out.println(df.format(a));
    }
    

    输出

    1.26
    

    【讨论】:

      【解决方案4】:

      设置精度并获取为String后,您可以通过

      将其转换回浮点数

      float f = Float.parseFloat(YourString);

      【讨论】:

      • 这不起作用,因为它可能导致浮点数等于“1.120000000000000000001”。这就是为什么“这种数据类型不应该用于精确值,例如货币”
      猜你喜欢
      • 2011-11-18
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多