Ho bisogno di eseguire un double su un int in Java, ma il valore numerico deve sempre arrotondare per difetto. cioè 99.99999999 -> 99Come eseguire il cast di un double in un int in Java arrotondandolo?
risposta
La trasmissione a un numero intero implica un decimale. Non c'è bisogno di chiamare Math.floor() (supponendo numeri positivi)
Semplicemente typecast con (int), ad esempio:
System.out.println((int)(99.9999)); // Prints 99
Detto questo, esso ha un comportamento diverso da Math.floor
che arrotonda verso negativo infinito (@ Chris Wong)
Nota che 'Math.floor' * fa * produce un risultato diverso per i numeri negativi rispetto a un semplice typecast. – Joey
Dipende da cosa significa OP con "round down". Il cast lo arrotonda "verso il basso" verso zero, mentre Math.floor arrotonda verso l'infinito negativo. –
Si noti inoltre che un int non può rappresentare tutti i valori interi possibili che può una doppia. Se si desidera troncare un valore a precisione doppia, eseguire il cast su un valore intero a 64 bit come lungo. 'System.out.println ((long) (9.9999e300));' –
Questo funziona bene int i = (int) dbl;
(int) 99,99999
Sarà 99. Casting un doppio a un int non rotonda, che sarà scartare la parte frazionaria.
+1 per aver menzionato il troncamento. –
per trasmettere un doppio a un int e farlo essere arrotondato all'intero più vicino (cioè a differenza del tipico (int)(1.8)
e (int)(1.2)
, che sia "arrotondare" verso 0 e ritorno 1
) , aggiungi semplicemente 0,5 allo double
che verrà convertito in un int
.
Ad esempio, se abbiamo
double a = 1.2;
double b = 1.8;
Poi le seguenti espressioni typecasting di x ed y e ritorneremo valori arrotondati-down (x = 1
e y = 1
):
int x = (int)(a); // This equals (int)(1.2) --> 1
int y = (int)(b); // This equals (int)(1.8) --> 1
Ma aggiungendo 0,5 a ciascuno, otterremo il risultato intero da arrotondato al più vicino che potremmo desiderare in alcuni casi (x = 1
e y = 2
):
int x = (int)(a + 0.5); // This equals (int)(1.8) --> 1
int y = (int)(b + 0.5); // This equals (int)(2.3) --> 2
Come piccola nota, questo metodo consente inoltre di controllare la sogliaalla quale la double
viene arrotondato o giù su (int)
typecasting.
(int)(a + 0.8);
da digitare. Questo arrotonderà fino a (int)a + 1
ogni volta che i valori decimali sono maggiori o uguali a 0,2. Cioè, aggiungendo 0.8 allo double
immediatamente prima di typecasting, 10.15 e 10.03 saranno arrotondati per difetto a 10 su (int)
typecasting, ma 10.23 e 10.7 saranno arrotondati a 11.
Hai perfettamente ragione, non è così. Ho visto che questo thread si apre quando Google sta cercando "Java int typecast double" e ha pensato che qualcuno che cercava un modo per arrotondare/scendere direttamente con il typecast (int) poteva usarlo. Questo non è pubblicato utilizzando un account stackoverflow (quindi non sto cercando di aumentare la mia reputazione, se è preso sul serio qui), solo cercando di aiutare a diffondere un trucco interessante che uso abbastanza spesso. :) Saluti! – JavaDrip
Bello, ma ricorda che funziona solo con ** positivi ** doppi. Ad esempio, se arrotondi -0,8 con questo trucco, il codice 'System.out.println (" "+ (int) (- 0.8d + 0.5))' stampa 0, invece di -1 come previsto –
new Double(99.9999).intValue()
provare con questo, questo è semplice
double x= 20.22889909008;
int a = (int) x;
this will return a=20
o provare con questo: -
Double x = 20.22889909008;
Integer a = x.intValue();
this will return a=20
o provare con questo: -
double x= 20.22889909008;
System.out.println("===="+(int)x);
this will return ===20
può essere questo codice sarà Aiutarti.
- 1. Perché int = int * double restituisce un errore e int * = double no (in Java)?
- 2. Objective-C, come posso convertire un double in un int?
- 3. In che modo static_cast può eseguire il cast di un int in char ma non reinterpret_cast?
- 4. Javascript: Cast Math.sqrt in int?
- 5. Per restituire un double, devo eseguire il cast per raddoppiare anche se i tipi sono double in C#?
- 6. Come convertire double in int in swift
- 7. Sovraccarico di Java: numero, numero; int, double
- 8. Come faccio a trasmettere un double a un int in Java?
- 9. Converti int in double Python
- 10. Perché un const int esegue implicitamente il cast in un byte, ma una variabile int no?
- 11. Come eseguire il cast dell'oggetto in Python
- 12. Java Puzzler - casting un doppio su int
- 13. Perché il cast di char in int funziona e non il char in Integer in Java
- 14. Come eseguire il cast di tipo semplice in Scala?
- 15. Come scrivi cast Char/Int in Scala?
- 16. esegue il cast di un oggetto su un'interfaccia in java?
- 17. Come eseguire il cast di int per fluttuare in GLSL (WebGL)?
- 18. Come eseguire il cast per enum in C++?
- 19. Copia il contenuto di un array int in un doppio array in Java?
- 20. È valido confrontare un doppio con un int in java?
- 21. VBA Excel: come eseguire il cast di un oggetto controllo generico in un oggetto ComboBox?
- 22. Come si trasmette un char * a un int o un double in C
- 23. Spiegazione di fusione/conversione int/double in C#
- 24. float vs double (in Java)
- 25. dove è op_addition in [int, float, double]
- 26. Come convertire BigDecimal in Double in Java?
- 27. Come si converte Double [] in double []?
- 28. Come eseguire il marshalling int * in C#?
- 29. Haskell - come eseguire il cast dei tipi?
- 30. Modo generico per eseguire il cast di enum in C++
possibile duplicato di [Come convertire float in int con Java] (http://stackoverflow.com/questions/1295424/how-to-convert-float-to-int-with-java) –
Credo che galleggia e i doppi sono diversi tipi di dati in Java. – badpanda
Penso che siano troppo vicini perché entrambi sono primitivi e tipi a virgola mobile. Le risposte sono le stesse e molto probabilmente continueranno a esserlo. –