计算后我有一个浮点值 10.5,10.0等
即有时十进制值为.0
什么是最好的方法,不显示.0即我宁愿显示 10.5,10
感谢。
答案 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”。