Metoda format i sposób wyświetlania wyniku

0
  1. Dlaczego tutaj jak zmienię na początku 'double' na 'long' to program mi działa?
public class EloHere {
 
    public static void main(String[] args) {
 
        double n = 461012;
 
        System.out.format("%08d%n", n);
 
    }
 
  1. Dlaczego tutaj jak zmienię "%08f%n" na "08d%n" to program się kompiluje.
public class EloHere {
 
    public static void main(String[] args) {
 
        long n = 461012;
 
        System.out.format("%08f%n", n);
 
    }
 
}

Czytałem dokumentację, ale nie mogę tego akurat zrozumieć, dziękuję za pomoc

1

https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html bo te przełączniki jak %d to nie są jakieś magiczne literki z d**y tylko oznaczają jaki konkretnie typ zmiennej chcesz wypisywać. %d to decimal integer i nie służy do wypisywania floatów/doubli.

5
  1. "d" oznacza liczbę całkowitą.
    W przypadku gdy chcesz sformatować double gdzieś tam w środku formattera metoda, która zwie się printInteger oczekuje typu: Byte, Short, Integer, Long, BigInteger, w przeciwnym wypadku wyrzuca IllegalFormatConversionException.

  2. "f" oznacza typ typ zmiennoprzecinkowy (floating point).
    Tutaj z kolei w bebechach zaszyta jest funkcja printFloat, która oczekuje typu: Float, Double, BigDecimal, a w innym przypadku rzuca wyjątkiem IllegalFormatConversionException.

Link do dokumentacji:
https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

1

E tam, skoro można przypisać

double x = 461012;

, to dlaczego nie można zapisać liczby stałoprzecinkowej 461012 w formacie zmiennoprzecinkowym? Sądzę, że zamiast odsyłać do dokumentacji, należy powiedzieć "bo tak zdecydowali twórcy języka".

1 użytkowników online, w tym zalogowanych: 0, gości: 1