Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Java] troncamento double

    Salve,
    come faccio a limitare i numeri dopo la virgola di un double?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] troncamento double

    Originariamente inviato da nonsopiuchedire
    come faccio a limitare i numeri dopo la virgola di un double?
    Grazie
    Moltiplichi per 10^num_cifre, tronchi con Math.floor() (o round() a seconda), il risultato lo dividi per 10^num_cifre. Questo è l'approccio "tipico".

    Se invece vuoi ottenere un String (quindi formattare il valore) con N cifre, si può fare e in diversi modi mi pare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quello dello String mi interessa di più.
    Infatti il mio problema è quello di fare delle operazioni su dei double
    e poi inserire il risultato in un db. Queste colonne però sono di tipo varchar, infatti trasformo il risultato in string.
    Quindi se mi indicassi il modo, farei il troncamento direttamente sullo string.
    Grazie, Grazie, Grazieeeeee

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nonsopiuchedire
    Quello dello String mi interessa di più.
    Infatti il mio problema è quello di fare delle operazioni su dei double
    e poi inserire il risultato in un db. Queste colonne però sono di tipo varchar, infatti trasformo il risultato in string.
    Il perché un valore double devi metterlo in un varchar sarebbe un altro discorso ....

    Comunque:
    codice:
    double d = 123456.45678;
    
    DecimalFormat df = new DecimalFormat("#.##");  // 2 cifre decimali
    
    String s = df.format(d);
    Nota che con il codice sopra il separatore dei decimali non è sempre il '.' (punto)! Il punto che vedi è solo nella specifica generica del formato.
    Il separatore inserito nella stringa dipende dal Locale corrente (se italiano la virgola, se inglese il punto, ecc...)

    Se vuoi "fissare" il locale al DecimalFormat lo puoi fare, vedi setDecimalFormatSymbols() di DecimalFormat o l'altro sui costruttore. E un DecimalFormatSymbols lo crei passando un Locale specifico.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Devo mettere un double in un varchar perché mi serve un numero con 2 cifre intere e solo 8 decimali,
    ora, mysql non permette di inserire un numero con il numero di cifre decimali maggiore della cifre intere.
    Ecco perché tutto questo giro, infatti devo sempre fare delle trasformazioni.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nonsopiuchedire
    mysql non permette di inserire un numero con il numero di cifre decimali maggiore della cifre intere.
    Come affermazione a me sembra falsa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Se la mia affermazione è falsa sono contentissima!
    Però, come mai quando dichiaro il campo di tipo double (2,8) mi da errore dicendo che M >= D?

    Se mi aiuti a risolvere posso modificare il codice java, semplificandolo

  8. #8
    Ho visto solo ora l'errore di interpretazione che facevo.
    Leggendo un altro manuale ho capito che M rappresenta il num totale di cifre!!!!!!!!!

    Scusa per il disturbo, ma grazie per la svegliata!

    Ora vediamo come sistemare il codice java

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.