Approssimare variabile double.

di il
16 risposte

Approssimare variabile double.

Salve,se ho inizializzato una variabile double che verrà da me usata come sommatore,per evitare che in output mi escano numeri del tipo 10.000000001 anzichè 10.00,come potrei fare?

16 Risposte

  • Re: Approssimare variabile double.

    Ishima ha scritto:


    Salve,se ho inizializzato una variabile double che verrà da me usata come sommatore,per evitare che in output mi escano numeri del tipo 10.000000001 anzichè 10.00,come potrei fare?
    Se vuoi formattare in stringa il numero ad un tot di decimali (con arrotondamento), puoi usare i NumberFormat o la funzionalità di formattazione delle stringhe da Java 5 offerta dai format/printf
    Ma tieni presente che in questi casi c'entra anche la "localizzazione" (italiano, inglese ecc...) del formato.
  • Re: Approssimare variabile double.

    andbin ha scritto:


    Ishima ha scritto:


    Salve,se ho inizializzato una variabile double che verrà da me usata come sommatore,per evitare che in output mi escano numeri del tipo 10.000000001 anzichè 10.00,come potrei fare?
    Se vuoi formattare in stringa il numero ad un tot di decimali (con arrotondamento), puoi usare i NumberFormat o la funzionalità di formattazione delle stringhe da Java 5 offerta dai format/printf
    Ma tieni presente che in questi casi c'entra anche la "localizzazione" (italiano, inglese ecc...) del formato.
    Quindi il codice da usare quale sarebbe? Si può usare direttamente in output o bisogna inizializzare la variabile?
  • Re: Approssimare variabile double.

    Ishima ha scritto:


    Quindi il codice da usare quale sarebbe?
    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    
    public class Prova {
        public static void main(String[] args) {
            double d = 10.5678;
    
            System.out.println(d);
    
            System.out.format("%.2f%n", d);     // 2 decimali. Nota: %n è il newline
    
            NumberFormat nf = new DecimalFormat("0.00");
            System.out.println(nf.format(d));
        }
    }
    Output:
    10.5678
    10,57
    10,57
    Nota due cose:
    a) L'output "localizzato" degli ultimi due, con la virgola (sul mio PC la lingua predefinita è l'italiano)
    b) L'arrotondamento effettuato.
  • Re: Approssimare variabile double.

    andbin ha scritto:


    Ishima ha scritto:


    Quindi il codice da usare quale sarebbe?
    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    
    public class Prova {
        public static void main(String[] args) {
            double d = 10.5678;
    
            System.out.println(d);
    
            System.out.format("%.2f%n", d);     // 2 decimali. Nota: %n è il newline
    
            NumberFormat nf = new DecimalFormat("0.00");
            System.out.println(nf.format(d));
        }
    }
    Output:
    10.5678
    10,57
    10,57
    Nota due cose:
    a) L'output "localizzato" degli ultimi due, con la virgola (sul mio PC la lingua predefinita è l'italiano)
    b) L'arrotondamento effettuato.
    Ok ma tu hai inizializzato la tua variabile d come 10,.... Ma nel caso di un sommatore,cioè come dovrei fare per arrotondare una volta che ha finito di sommare tutti i valori?
  • Re: Approssimare variabile double.

    Ishima ha scritto:


    Ok ma tu hai inizializzato la tua variabile d come 10,.... Ma nel caso di un sommatore,cioè come dovrei fare per arrotondare una volta che ha finito di sommare tutti i valori?
    Non cambia nulla. Avrai comunque un valore double. Devi solo stabilire quanti decimali, quale algoritmo di arrotondamento (con i NumberFormat lo puoi specificare facilmente con setRoundingMode, da Java 6) e quale API usare (i format/printf o i NumberFormat).
  • Re: Approssimare variabile double.

    andbin ha scritto:


    Ishima ha scritto:


    Ok ma tu hai inizializzato la tua variabile d come 10,.... Ma nel caso di un sommatore,cioè come dovrei fare per arrotondare una volta che ha finito di sommare tutti i valori?
    Non cambia nulla. Avrai comunque un valore double. Devi solo stabilire quanti decimali, quale algoritmo di arrotondamento (con i NumberFormat lo puoi specificare facilmente con setRoundingMode, da Java 6) e quale API usare (i format/printf o i NumberFormat).
    Ok,ed è possibile inserire in una textarea attraverso il settext il valore approssimato?
  • Re: Approssimare variabile double.

    Ishima ha scritto:


    Ok,ed è possibile inserire in una textarea attraverso il settext il valore approssimato?
    Sia il format di String che di NumberFormat restituiscono String. Quindi ovviamente sì.
  • Re: Approssimare variabile double.

    andbin ha scritto:


    Ishima ha scritto:


    Ok,ed è possibile inserire in una textarea attraverso il settext il valore approssimato?
    Sia il format di String che di NumberFormat restituiscono String. Quindi ovviamente sì.
    Grazie ma comunque continuo a non saperlo applicare,guarda un po quì:
    public class Cameriere extends javax.swing.JFrame {
    float S=0; //SOMMATORE. Dopo il sommatore verrà incrementato e alla fine restituito in output.
    ....//Cosa va?
    TextArea.setText(S);
    } 
  • Re: Approssimare variabile double.

    Ishima ha scritto:


    Grazie ma comunque continuo a non saperlo applicare
    double val = ......
    String str = String.format("%.2f", val);
    oppure
    DecimalFormat df = new DecimalFormat("0.00");
    String str = df.format(val);
  • Re: Approssimare variabile double.

    public class Cameriere extends javax.swing.JFrame {
        double S=0;
        double t=0;
    double c=0;
        public Cameriere() {
        DecimalFormat df = new DecimalFormat("0.00");
        String str = df.format(S);
        }
    private void jComboBox3ActionPerformed(java.awt.event.ActionEvent evt)
     {                                           
        if (jComboBox3.getSelectedItem().equals("UOVO")){
            S+=5.7;
            t+=1;
      }
    c= t + S //Non lo posso fare ma è questo ciò che m'interessa.
    }
    TextArea.setText(c);
    }
  • Re: Approssimare variabile double.

    Ishima ha scritto:


        public Cameriere() {
        DecimalFormat df = new DecimalFormat("0.00");
        String str = df.format(S);
        }
    Non ha senso formattare il valore di S nel costruttore. In quel momento S vale 0.
  • Re: Approssimare variabile double.

    andbin ha scritto:


    Ishima ha scritto:


        public Cameriere() {
        DecimalFormat df = new DecimalFormat("0.00");
        String str = df.format(S);
        }
    Non ha senso formattare il valore di S nel costruttore. In quel momento S vale 0.
    Ok,però poi non so come darlo nel settext una volta arrotondato e sommato
  • Re: Approssimare variabile double.

    Ishima ha scritto:


    Ok,però poi non so come darlo nel settext una volta arrotondato e sommato
    Scusa ma queste sono super-banalità .... fai la formattazione poco prima del setText
  • Re: Approssimare variabile double.

    andbin ha scritto:


    Ishima ha scritto:


    Ok,però poi non so come darlo nel settext una volta arrotondato e sommato
    Scusa ma queste sono super-banalità .... fai la formattazione poco prima del setText
    E poi nel settext inserisco str anzichè S giusto?
Devi accedere o registrarti per scrivere nel forum
16 risposte