В Java, как мне удалить десятичные разряды выходного double, когда это целое число, но сохранить их, когда это число с плавающей точкой?

#java #type-conversion #format #output #double

#java #преобразование типов #формат #вывод #double

Вопрос:

Пользователь вводит строковое числовое значение, и оно может быть любым, например, 3,14 или 10. При преобразовании в double и печати значения обратно я хотел бы возвращать целочисленные значения, такие как 10, просто как «10», а не «10.0», но если пользователь вводит 3.14, я все равно хотел бы вернуть 3.14. Я знаю, что это можно сделать с помощью регулярных выражений и поиска в строке, а затем преобразовать значения в int или double соответственно, но есть ли более простой способ сделать это? Вот мой простой код:

     Scanner scanner = new Scanner(Systemin);
    System.out.println("Give a number:");
    double value = Double.parseDouble(scanner.nextLine());
    System.out.println("You gave the number "   value);
    
  

Комментарии:

1. Вы, вероятно, ищете BigDecimal .

Ответ №1:

Для этого вы можете использовать DecimalFormat . # означает, что если число присутствует, оно будет отображаться.

 DecimalFormat format = new DecimalFormat("##.##");
System.out.println("You gave the number "   format.format(value));