如果是实数十进制数,则仅显示Java中的十进制数字

时间:2015-02-19 09:47:12

标签: java string format

有时一个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"
}

感谢您的帮助!

此致

4 个答案:

答案 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
            }