[JAVA] Confrontare parti decimali di due numeri double
[JAVA] Confrontare parti decimali di due numeri double
Esiste un modo per confrontare, in maniera precisa, le parti decimali di due numeri double?
Tnx
Tnx
- nuzzopippo
- Entusiasta Emergente
- Messaggi: 1627
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: [JAVA] Confrontare parti decimali di due numeri double
Domanda un po' vaga ... cosa servirebbe di preciso?
Giusto per esempio, volendo confrontate le parti decimali di due long [edit : intendevo double ] secondo i criteri "maggiore, minore o uguale" sarebbe sufficiente sottrarre la parte intera e comparare, la butto li
Diverso è il discorso quando si vogliano confrontare i singoli caratteri costituenti le parti decimali di due numeri, in tal caso si dovrebbero convertire i singoli numeri in stringhe, suddividere le stringhe nella parte intera e decimale, p.e. usando split() con il punto come elemento separatore e quindi operare.
Al di sopra di tutto aleggia la circostanza che la rappresentazione numerica informatica non è assolutissimamente precisa.
{edit] giusto a riprova dell'imprecisione, inserendo l'istruzione
dopo la definizione delle variabili si otterrebbe, per i valori 3.234 e 1.233 il seguente output
Giusto per esempio, volendo confrontate le parti decimali di due long [edit : intendevo double ] secondo i criteri "maggiore, minore o uguale" sarebbe sufficiente sottrarre la parte intera e comparare, la butto li
Codice: Seleziona tutto
public class Test {
public static void main(String[] args) {
try {
double x = Double.parseDouble(args[0]);
double y = Double.parseDouble(args[1]);
double a = x - Math.floor(x);
double b = y - Math.floor(y);
if (a > b) {
System.out.println("a maggiore di b");
} else if(a < b) {
System.out.println("a minore di b");
} else {
System.out.println("a uguale b");
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
Al di sopra di tutto aleggia la circostanza che la rappresentazione numerica informatica non è assolutissimamente precisa.
{edit] giusto a riprova dell'imprecisione, inserendo l'istruzione
Codice: Seleziona tutto
System.out.println("Valori : x = " + x + ", y = " + y + ", a = " + a + ", b = " + b);
Codice: Seleziona tutto
java Test 3.234 1.233
Valori : x = 3.234, y = 1.233, a = 0.23399999999999999, b = 0.2330000000000001
a maggiore di b
Ultima modifica di nuzzopippo il martedì 7 luglio 2015, 12:56, modificato 2 volte in totale.
Fatti non foste a viver come bruti ...
- SuperStep
- Entusiasta Emergente
- Messaggi: 2037
- Iscrizione: lunedì 19 dicembre 2011, 16:26
- Desktop: Unity
- Distribuzione: Ubuntu 16.04 LTS x86_64
- Sesso: Maschile
- Località: Somma Vesuviana (NA)
Re: [JAVA] Confrontare parti decimali di due numeri double
quello che devi fare per estrapolare la parte decimale senza trasformarlo in stringa se hai due numeri, ti basta sottrarre il numero arrotondato (per i numeri negativi devi aggiungere +1)
adesso specifica cosa intendi per confrontare, in ogni caso le due parti sono decimale_numero_1, decimale_numero_2
Codice: Seleziona tutto
intero_numero_1 = floor(numero_1);
decimale_numero_1 = numero_1 - intero_numero_1;
intero_numero_2 = floor(numero_2);
decimale_numero_2 = numero_2 - intero_numero_2
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Re: [JAVA] Confrontare parti decimali di due numeri double
Scusate l'enorme ritardo e grazie per le risposte.
La mia domanda era riferita al fatto che devo memorizzare parte intera e decimale di un numero double in due vettori differenti.
Stavo provando anche ad utilizzare le stringhe, col seguente codice:
Ma non capisco come mai il metodo split non divide in 2 la stringa quando incontra il separatore ".".
Dove sbaglio?
Grazie
La mia domanda era riferita al fatto che devo memorizzare parte intera e decimale di un numero double in due vettori differenti.
Stavo provando anche ad utilizzare le stringhe, col seguente codice:
Codice: Seleziona tutto
/* voglio ottenere solo la parte decimale */
double v = 23.689;
String num = String.valueOf(v);
String[] num2 = num.split(".");
System.out.println(num2.length); // stampa 0
long l = Long.parseLong(num2[1]);
Dove sbaglio?
Grazie
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: [JAVA] Confrontare parti decimali di due numeri double
split() splitta utilizzando le espressioni regolari, se vuoi matchare il carattere `.` devi usare l'escape.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 14 ospiti