【问题标题】:Set number of decimal places to 0 if float is an integer (java)?如果浮点数是整数(java),将小数位数设置为0?
【发布时间】:2012-08-16 05:23:27
【问题描述】:

我正在使用浮点数来保存分数。分数可以是整数或小数。默认情况下,浮点数显示为 0.0、1.0 等。如果数字没有小数点,我需要它显示为 0、1 等。如果它有小数点,那么我需要显示小数点。我该怎么做?

【问题讨论】:

  • 您不应该使用浮点数来保存分数。它容易出现累积错误。我建议使用两个变量来保存分数的两个部分,然后适当地格式化分数的显示。
  • 或使用BigDecimal
  • 它必须是浮点数,因为 SharedPreferences 接受浮点数,而不是双精度数(Android,顺便说一句)

标签: java floating-point integer decimal


【解决方案1】:
String string;
float n = 3.0f;
if (n % 1 == 0) {
    string = String.valueOf((int) n);
} else {
    string = String.valueOf(n);
}
System.out.println("Score: " + string);

警告:未经测试的代码。 ;)

好的,我已经测试过了并修复了一个错误。

【讨论】:

    【解决方案2】:

    你可以使用:

    NumberFormat.getInstance().format(score);
    

    存在时以小数位显示。

    为了防止舍入错误,这里的score 可以使用BigDecimal 表示。

    【讨论】:

    • 这并没有去掉小数点?
    • 不显示原始分数,使用 NumberFormat 的输出。
    【解决方案3】:

    最好的办法是计算出最小的分数粒度,然后将其与适当的乘数一起使用。

    例如,如果最小增量是 0.01,则使用 100 的乘数。如果您的分数 % mulitplier = 0,那么您就知道它是一个整数。

    这样您就不必担心舍入或表示错误。

    【讨论】:

      猜你喜欢
      • 2016-02-09
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 2011-10-25
      相关资源
      最近更新 更多