PDA

View Full Version : [JAVA] Problema su numeri e virgole


Napalm
08-05-2005, 17:45
Io ho:

long start = System.currentTimeMillis();

e

long end = System.currentTimeMillis();

se faccio:

long time = end - start; mi dà il tempo in msec ma io li voglio in secondi allora faccio time/1000 ma mi approssima sempre 0.0 o 1.0 ma io vorrei almeno 3 cifre dopo la virgola... se per esempio il risultato della sottrazione fosse 983 dovrebbe stamparmi 0.983.... come faccio?

NapalM

theClimber
08-05-2005, 18:09
sia start che end sono dei long e non implementano aritmetica a virgola mobile.

Prova a fare dividere per 1000d, in questo modo forzi uncast a double di tutta l'espressione. Occhio al fatto che con i numeri a virgola mobile non hai un controllo esatto del numero di cifre decimali; causa arrotondamenti causati dalle approssimazione del formato potresti trovare stampati dei numeri strani come 4.6999999999 o simili.

per formattare i numeri a piacere prova a dare un occhio alla classe della JDK java.text.DecimalFormat

ciao

Napalm
08-05-2005, 18:42
Grazie mille, non conoscevo l'utilizzao di quella "d" :)

Già che ci sono ti pongo un quesito: io dovrei fare la differenza fra 2 date, data/ora in questo momento e data/ora di inserimento news e dovrei avere in output quanto tempo fà è stata inserita la suddetta news.. come posso fare?
Penso di dovre trasformare tutto in millisec e poi fare la differenza e trasformarla in giorni ore min ecc... ma x la data "adesso" non ho problema con System.ecc... come faccio x la data di inserimento news a trasformarla in millisecondi (io ce l'ho 10-10-2005 18:15:06)?

NapalM

kingv
08-05-2005, 19:49
Grazie mille, non conoscevo l'utilizzao di quella "d" :)
come faccio x la data di inserimento news a trasformarla in millisecondi (io ce l'ho 10-10-2005 18:15:06)?

NapalM



long data = ((Date)new java.text.SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("10-10-2005 18:15:06")).getTime();

Napalm
08-05-2005, 21:11
long data = ((Date)new java.text.SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("10-10-2005 18:15:06")).getTime();

urca, grazie mille... lo provo :)

NapalM