Warunek sprawdzający czy Double ma coś po przecinku

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.

0

W C# możesz zrobić to tak:

            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 :)

0

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

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

0

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

		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);
		}
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)

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.

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"

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"

0

Już wiem!
Dzięki za pomoc.

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

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