Newsgroup: it.comp.java
Titolo: Arrotondare un double facendolo rimanere tale

sapreste indicarmi come si arrotonda e un double ad esempio alla seconda
cifra decimale.
Mi interessa che il tipo risultante sia sempre un double, quindi non
credo di poter usare Numberformat.
Esempio se il numero è 54,54545454 vorrei avere un  double che vale 54,54
-- 
Ciao Flex
________________________________________________
Chi sa ascoltare non solo e' simpatico a tutti ,
ma prima o poi finisce con l'imparare qualcosa


Vorrai dire che vale 54,54000000...
Forse e' meglio se ci dici il motivo di quello che vuoi fare perche' temo 
che tu sia sulla strada sbagliata. 

 temo che tu sia sulla strada sbagliata.
sto eseguendo un calcolo tipo : 
double speed = (vel * 1000) / 3600 / spazio ;
dato uno spazio in Km e una velocità Km/h 
devo trovare la velocita' di animazione in pixel/secondo
per far muovere il punto sullo schermo.
Mi interessa avere un valore approssimato alla seconda cifra decimale



Si ok, ma ti interessa averlo approssimato per farci cosa?
Per visualizzarlo no?
E allora va benissimo se lo formatti ritornando una stringa. 

 Per visualizzarlo no?
No, per darlo in input ad un metodo che esegue altri calcoli


 No, per darlo in input ad un metodo che esegue altri calcoli
Non per farmi i c...i tuoi, ma se devi eseguire altri calcoli,
perche' perdere da subito delle cifre significative?


Allora evita di arrontondare. Anzi usa un float invece così risparmi 
risorse. 

 Esempio se il numero è 54,54545454 vorrei avere un  double che vale 54,54
double a = 54,54545454...
int b = Math.round(a*100);
double c = b/100;
che dici funzionerà?

 double speed = (vel * 1000) / 3600 / spazio ;
Usa BigDecimal.

 perche' perdere da subito delle cifre significative?
Boh, chi mi ha dato le specifiche,mi ha detto che sono richieste 2 cifre
di precisione, probabilmente se ce ne sono di + non guastano


 che dici funzionerà?
Geniale, da mettere nelle FAQ
Grazie



Nooo, stai perdendo tempo!
E' un'operazione completamente priva di significato. 

 
Dai un po' un'occhiata qui:
http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html#round(java.math.MathContext)
Ciao
Fabio B.

 Fabio B.
Interessante... grazie x il link


 di precisione, probabilmente se ce ne sono di + non guastano
Probabilmente servono 2 cifre di precisione sul risultato *finale*,
quindi per i calcoli intermedi ne *devi* usare di piu'.
Fai l'arrotondamento *solo* quando devi mostrare i risultati.
Oh, che poi quelle due cifre siano effettivamente significative,
questo dipende da quanti e quali calcoli fai...
Ciao
Roberto

 Geniale, da mettere nelle FAQ
Non fare lo spiritoso, con qualche modifica e un casting funziona benissimo,
provaci,
in ogni caso prima di spulciare le migliaia di classi che ti danno la
funzione giusta puoi anche
far funzionare il cervello non credi?
    double b= ((double) Math.round(a*100))/100;

 Esempio se il numero č 54,54545454 vorrei avere un  double che vale 54,54
Quello NON č, matematicamente parlando un *arrotondamento*, ma si chiama
troncamento.
Credo che ti debba dare una spulciata  a qualche libro di matematica, prima
di contraddirti in una frase soltanto.

 provaci,
Io non stavo scherzando, funziona !!!


 di contraddirti in una frase soltanto.
Hai ragione


"Flex" <flexNO...@REprogrammareweb.com> ha scritto nel
messaggio
news:pan.2005.10.26....@REprogrammareweb.com...
| Il Tue, 25 Oct 2005 14:42:49 +0200, Gringo ha scritto:
|
| >> Esempio se il numero č 54,54545454 vorrei avere un
double che vale 54,54
| >
| > Quello NON č, matematicamente parlando un
*arrotondamento*, ma si chiama
| > troncamento.
| > Credo che ti debba dare una spulciata  a qualche libro
di matematica, prima
| > di contraddirti in una frase soltanto.
|
| Hai ragione
Pensavo mi stessi prendendo per i fondelli, in ogni caso
anchio spesso vado alla ricerca delle classi che mi
risolvono il problema, perņ, spesso, il tempo che perdo č di
gran lunga superiore, talvolta, rispetto a quello che ci
metto a costruirmi una mia soluzione, seppur banale e
artificiosa!

 artificiosa!
A me spesso capita il contrario, quando mostro il mio codice a gente piu'
pratica a volte mi sostituiscono metodi che ho impiegato ore a fare con 2
righe di codice , e mi dicono sempre :
Perche' fare quello che hanno gia' fatto gli altri ?


"Flex" <flexNO...@REprogrammareweb.com> ha scritto nel
messaggio
news:pan.2005.10.26....@REprogrammareweb.com...
| Il Wed, 26 Oct 2005 15:34:46 +0200, Gringo ha scritto:
|
| > Pensavo mi stessi prendendo per i fondelli, in ogni caso
| > anchio spesso vado alla ricerca delle classi che mi
| > risolvono il problema, però, spesso, il tempo che perdo
è di
| > gran lunga superiore, talvolta, rispetto a quello che ci
| > metto a costruirmi una mia soluzione, seppur banale e
| > artificiosa!
|
| A me spesso capita il contrario, quando mostro il mio
codice a gente piu'
| pratica a volte mi sostituiscono metodi che ho impiegato
ore a fare con 2
| righe di codice , e mi dicono sempre :
|
| Perche' fare quello che hanno gia' fatto gli altri ?
E si, hai incontrato gente un po' presentuosa, il fatto è
che, è vero che esistono cose già pronte all'uso,
ma conoscerle è questione di pratica non mancanza di
preparazione.
Il Java è una grande città estera, dove i nuovi arrivati
devono trovare tutto all'inizio, l'alimentari, la farmacia,
il supermercato, il cinema,
il ferramenta, e molti altri negozi prima mai consciuti dove
trovi tante cose mai viste.
Ma la frase che ti dicono è per farsi un po grandi rispetto
a te, ben sapendo che anche loro all'inizio annaspavano  :)