如何删除浮点上的尾随零

时间:2013-08-14 17:36:26

标签: android

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

即有时十进制值为.0

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

感谢。

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

输出时不要将float的值与其表示混淆:

例如,浮点值可能是10.000001但是你用十进制后的两位数格式化它,你最后得到一个字符串,实质上是“10.00”。

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

  • 只需将其转换为String.valueOf(10.0)(或更短的"" + 10.0
  • 字符串即可
  • 使用DecimalFormatter并提供类似“#。##”的格式字符串,以便始终在小数点后保留两位数,即使浮点数具有超出截止值的非零数字。这将返回一个格式化的字符串。
  • 使用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”。