计算后我有一个浮点值 10.5、10.0 等
即有时十进制值为 .0
什么是不显示 .0 的最佳方法,即我宁愿显示 10.5、10
谢谢。
简单但冗长。
将您的浮点数转换为字符串。使用“.”分割字符串 作为分隔符。所以它的输出是一个由 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
希望这可能对您有所帮助。
输出时不要将浮点数的值与其表示混淆:
例如,浮点值可能是 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”。