有时一个double可以有一个整数值,有时候它可以是一个真正的十进制数字"。
我正在寻找一种只打印十进制数字的方法,如果它没有整数值:
public static void main(String[] args) {
double test = 1; // should print "1"
double test2 = 1.5; // should print "1,5"
System.out.println(String.format("%.1f", test)); // OUTPUT: "1,0"
System.out.println(String.format("%.1f", test2)); // OUTPUT: "1,5"
}
感谢您的帮助!
此致
答案 0 :(得分:0)
你可以试试这个:
public static boolean isInteger(double num){
if (num % 1 == 0){
return true;
} else {
return false;
}
}
检查数字是否包含小数值。 如果方法返回true,则可以将其强制转换为long或int。
答案 1 :(得分:0)
//obtain an array of strings based on the comma as delimeter
String[] array = java.util.Arrays.toString(String.valueOf(test).split("\\,"));
//if the second string (the decimal part) is not 0, then print both strings with a comma in between, othwersise only the integer part
if(array[1].equals("0")==false)
System.out.println(array[0]+","+array[1]);
else
System.out.println(array[0]);
答案 2 :(得分:0)
对于十进制数字,您可以指定您想要的数量
public static void printNumber(double num){
if (num % 1 == 0){
System.out.println(String.format("%.0f", num));
} else {
System.out.println(String.format("%.1f", num));
}
}
public static void main(String[] args) {
double test = 1; // should print "1"
double test2 = 1.5; // should print "1,5"
printNumber(test); // print 1
printNumber(test2); // print 1,5
}
答案 3 :(得分:0)
通过正则表达式
double test2 =1.5;
if(!Double.toString(test2).matches("\\d+\\.0+")){ // matchs test2 whether it contains 0s after .(decimal) or not
System.out.println(test2); //1.5
System.out.println(Double.toString(test2).replaceAll("\\.", ","));// 1,5
}