Kezdőoldal » Számítástechnika » Programozás » Javában hogy lehet megoldani,...

Javában hogy lehet megoldani, hogy ha kijön eredménynek egy több tizedes hosszúságú szám, azt csak két tizedesig írja ki?

Figyelt kérdés
2009. dec. 26. 23:06
1 2
 1/13 anonim ***** válasza:

Math.Round függvénynek nézz utána.

Próbáld mondjuk ezt:

Math.round(100 * x) / 100.0

2009. dec. 27. 00:52
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:
De így levágja a végét. Ha csak kiírásnál akarod, akkor pl. a printf-ben %f helyett %.2f-et írj, azt hiszem.
2009. dec. 27. 11:26
Hasznos számodra ez a válasz?
 3/13 A kérdező kommentje:
amit mondtál, az nem C++ ?
2009. dec. 27. 11:36
 4/13 anonim ***** válasza:
Inkább C, tudtommal a C++ -ban inkább a cout használatos. A Java-ban is van, ott System.out.printf(). Amúgy az első válasz is jó volt, a felhasználástól függ, hogy levágja-e a szám végét. Biztos van még 1-2 megoldás is.
2009. dec. 27. 13:19
Hasznos számodra ez a válasz?
 5/13 A kérdező kommentje:
Math.round -ot ha jól értelmezem kerekíti a számot, pl 73,34 ből 73at csinál.
2009. dec. 27. 13:44
 6/13 anonim ***** válasza:
Nem, azt meghagyja, mert a végén osztja 100-zal. Azért 100.0, hogy a végeredmény is lebegőpontos szám legyen, ne egész.
2009. dec. 27. 15:02
Hasznos számodra ez a válasz?
 7/13 anonim ***** válasza:
A Math.Round 73,34-ből alapesetben 73-at csinálna, de nem véletlenül van ott a 100-zal való szorzás. Tehát gyakorlatilag a függvény 7334-re hajtódik végre, majd utána az osztással visszakapod a 73,34-et.
2009. dec. 27. 15:28
Hasznos számodra ez a válasz?
 8/13 A kérdező kommentje:

Sajnos még mindig nem az az eredmény, ami kellene.

Itt egy példa:


import java.util.Scanner;

class Teszt {

public static void main(String[] arguments) {

Scanner in = new Scanner(System.in);

System.out.print("nr #1: ");

double nr1=in.nextDouble();

System.out.print("nr #2: ");

double nr2=in.nextDouble();

in.close();

double x = nr1 / nr2;

System.out.println(Math.round(100 * x) / 100.0);

}

}


Vegyünk két számot, pl: #1:2,66 #2:9,55

Ha csak simán x -et iratok ki, az eredmény 0.27853403141361255, míg a Math.rounddal 0,28

Nem nagy különbség, de nekem max 3 tizedesig kéne a pontos eredmény.

2009. dec. 27. 15:50
 9/13 anonim ***** válasza:

Ja hát nyilván így a 27,8-at felkerekíti 28-ra. Mostmár rájöttem, hogy neked csonkolás kell.

Azt pedig pl. így tudod elérni:

x=(long)(x*100)/100.0;

2009. dec. 27. 16:41
Hasznos számodra ez a válasz?
 10/13 A kérdező kommentje:
Lehet ha én rontom el valahol, de így is 0,28at kapok.
2009. dec. 27. 16:47
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!