Warunek sprawdzający czy Double ma coś po przecinku

Warunek sprawdzający czy Double ma coś po przecinku
  • Rejestracja: dni
  • Ostatnio: dni
0

Chciałbym umieścić wartość z double do kontrolki tekstowej, ale chcę dodać warunek który umieści bez wartości po przecinku jeśli nic tam nie ma czyli "Double wartosc = 2.0" to wyświetli "2"

Nie chodzi mi o funkcję Math.floor(d) bo jeśli wartość double wynosi 2.00000002 to ma ją wyświetlić z wartością po przecinku.

Java.

fourfour
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 627
0

W C# możesz zrobić to tak:

Kopiuj
            double a = 2;
            Console.WriteLine("Double z miejscami po przedinku= {0, 10:F4}   (bez przecinka {0:N0})", a); 

Tak ogólnie - formatowanie tekstu to interesujący Cię w tym przypadku temat. :)

Kurde, nie dojrzałem ostatniego słowa postu - Java. Przepraszam :)

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Tu patrzyłeś?
http://stackoverflow.com/questions/12806278/double-decimal-formatting-in-java

Jest trochę odpowiedzi. Myślę że Cię naprowadzi

  • Rejestracja: dni
  • Ostatnio: dni
0

Takie coś wymyśliłem :)
Przepraszam, że takie proste pytanie zadałem, jestem nowicjuszem.

Kopiuj
		double wartoscPodstawowa = 2.0; // Wartość formatowana
		
		// Jeśli wartość ma #.0
		if ( (int) wartoscPodstawowa==wartoscPodstawowa)
		{
			System.out.println((int) wartoscPodstawowa);
		}
		
		// Jeśli wartość ma #.#
		else 
		{
			System.out.println(wartoscPodstawowa);
		}
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam jeszcze jedno pytanie, dlaczego pierwiastek 3 stopnia z 64 to 3.9999999999999996 zamiast 4?
przy takim działaniu Math.pow(64, 1.d/3.d)

AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1493
0

Bo liczba zmiennoprzecinkowa ma skończoną dokładność. Z tego powodu też operator == raczej nie będzie działać dobrze. Musisz założyć sobie jakąś dokładność, np. 5 miejsc po przecinku i sprawdzać czy różnica między wartością odczytywaną a oczekiwaną mieści się w tym zakresie.

  • Rejestracja: dni
  • Ostatnio: dni
0

Trzeba zrobić limit, ale te funkcje do formatowania dodają niepotrzebnie dodatkowe zera jak nie wypełni się limitu.

Ustawię 10 liczb po przecinku na wartości 4.5213 a uzyskuję "4,5213000000" zamiast oczekiwanych "4.5213"

Kopiuj
System.out.println(String.format("%.10f", 4.5213));

Jak zrobić to bez otrzymywania dodatkowych zer? Wiem, że one nie przeszkadzają w obliczeniach, ale wolałbym uzyskać wynik po formatowaniu "4.5213"

  • Rejestracja: dni
  • Ostatnio: dni
0

Już wiem!
Dzięki za pomoc.

Kopiuj
		double d = 4.5213;
		DecimalFormat df = new DecimalFormat("#.##########");
		System.out.print(df.format(d));

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.