-3

计算后我有一个浮点值 10.5、10.0 等

即有时十进制值为 .0

什么是不显示 .0 的最佳方法,即我宁愿显示 10.5、10

谢谢。

4

2 回答 2

1

简单但冗长。

将您的浮点数转换为字符串。使用“.”分割字符串 作为分隔符。所以它的输出是一个由 2 个字符串组成的数组。也就是说,数组中的第一个元素是小数点之前的元素,第二个元素是小数点后的数组值。

根据您的说法,如果元素为 0 后的小数点,那么您更喜欢整数,而不是浮点值。所以按照下面的代码:

float a=10.0;
String[] arr=a.toString().split(".");
if(Integer.parseInt(arr[1])==0) //Means, after decimal it is a 0 eg. 10.0
      System.out.println(Integer.parseInt(arr[0]); //So printing only the first half
else
      System.out.println(a); //Means after decimal there is some value. eg. 10.5

希望这可能对您有所帮助。

于 2013-08-14T17:58:30.753 回答
0

输出时不要将浮点数的值与其表示混淆:

例如,浮点值可能是 10.000001,但如果您将其格式化为小数点后两位数,您最终会得到一个字符串,本质上是“10.00”。

在 Java 中有多种格式化浮点数的方法:

  • 只需将其转换为带有String.valueOf(10.0)(或更短的形式)的字符串"" + 10.0
  • 使用 aDecimalFormatter并提供像“#.##”这样的格式字符串以始终保留小数点后两位数,即使浮点数在截止值之外有非零数字。这将返回一个格式化的字符串。
  • 使用System.out.format()并提供像 "%10.2f" 这样的格式字符串,以再次保留 2 位数字。请注意,这将输出到系统控制台。

如果您想使用它们,我会留给您查找它们。

现在,对于您的问题,您似乎想要小数点后的不确定位数,但绝不是零。

float f = 10.0;
String a = "" + f;
if (a.endsWith(".0")) {
    if (a.equals(".0)) {
        a = "0";
    } else {
        a = a.substring(0, a.length() - 2);
    }
}

这将去掉尾随的“.0”,如果什么都没有,添加整数部分“0”。

于 2013-08-14T17:50:29.353 回答