Autore Topic: Formattazione di un double  (Letto 333 volte)

Offline Dr.Joek

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore a gogo
  • Sistema operativo:
    Windows7, Windows8.1, Ubuntu15.3, Windows10
Formattazione di un double
« il: 11 Agosto 2015, 02:52:21 CEST »
0
Ciao a tutti sto iniziando ora con java quindi mi scuso se nella vostra lettura leggerete blasfemie, per esercitarmi sto facendo una "applicazione" che se io inserisco un numero essa farà dei calcoli e infine darà i risultati, il calcolo è (n4 * n4 /2) cioè la potenza di un numero fratto 2 c'è un solo problema che se il numero (n4) è inferiore  o uguale a 3162 l'applicazione darà il risultato per intero cioè (4999122.0) , invece se il numero è maggiore a 3162 il risultato sarà approssimato tipo se inserisco 6000 come risultato da (1.8E7) che teoricamente significa 18 più 7 zeri di cui uno dopo la virgola (18000000.0) il problema è che io voglio che mi scriva il risultato per intero cioè (18000000.0).
Ho anche provato a fare: Math.pow(n4, 2.0) ma da lo stesso problema.
Ecco il codice (n4 è uguale al testo di una EditText convertito in double perchè n4 è un double.
Codice (Java): [Seleziona]
if(n4 > 1){
                            if(n3 == 0){
                                n3 = n4 * n4 / 2;
                                g1 = n4 * n4;
                                testo11113.setText(n4 + "\u00B2" + "/2= " + g1 + "/2= " + n3);
                                gruppo11113.setVisibility(View.VISIBLE);

                            }
                        }

Immagini:
https://gyazo.com/574dbb84736572e4999a8c5faf6e1d41
https://gyazo.com/d9efa49b5121b40eb4c26ffe1c56c8a9

C'è una soluzione per fargli formattare il numero in una maniera diversa(per esteso)?
Può darsi che sia un problema di quanti bit può contenere una variabile double?
Spero che mi rispondiate, vi ringrazio in anticipo.
« Ultima modifica: 11 Agosto 2015, 16:08:52 CEST da Dr.Joek »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema nella gestione di un calcolo
« Risposta #1 il: 11 Agosto 2015, 09:16:55 CEST »
+1
E' un problema di formattazione dell'output. Java fornisce svariate opzioni in merito.

Guarda qua: https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Problema nella gestione di un calcolo
« Risposta #2 il: 11 Agosto 2015, 12:41:39 CEST »
+1
Non usi numeri interi ma float point, quando il numero supera una certa magnitudine di default viene visualizzato in notazione scientifica. Se vuoi imporre una formattazione particolare studiati il metodo format della classe String: http://developer.android.com/reference/java/lang/String.html#format(java.lang.String, java.lang.Object...)

Inviato dal mio Nexus 5 utilizzando Tapatalk
adb logcat | tee /tmp/logcat | grep TAG

Offline Dr.Joek

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore a gogo
  • Sistema operativo:
    Windows7, Windows8.1, Ubuntu15.3, Windows10
Re:Problema nella gestione di un calcolo
« Risposta #3 il: 11 Agosto 2015, 13:58:29 CEST »
0
E' un problema di formattazione dell'output. Java fornisce svariate opzioni in merito.

Guarda qua: https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

Grazie Bradipao della risposta, ho letto e appreso il link che mi hai dato, e ho imparato come formattare un testo (potete anche vedere dal codice) grazie a tutti della collaborazione, lascio il codice per i "turisti" che verranno in futuro a visitare
Codice (Java): [Seleziona]
if(n4 > 1){
                            if(n3 == 0){
                                n3 = (int)n4 * (int)n4 / 2;
                                g1 = (int)n4 * (int)n4;
                               
                                n4f("###'###'###'###.###", n4);
                                n3f("###'###'###'###.###", n3);
                                g1f("###'###'###'###.###", g1);

                                testo11113.setTexts4 + "\u00B2" + "/2= " + k1 + "/2= " + s3);

                                gruppo11113.setVisibility(View.VISIBLE);

                            }
                        }
                    }
                }
            }
        });

       

    }
    static public void n4f(String pattern, double value ) {
        DecimalFormat myFormatter = new DecimalFormat(pattern);
        String output = myFormatter.format(value);
        s4 = output; //s4, s3, k1 sono tutte stringhe STATICHE e n4, n3, g1 sono anch'esse STATICHE
    }
    static public void n3f(String pattern, double value ) {
        DecimalFormat myFormatter = new DecimalFormat(pattern);
        String output = myFormatter.format(value);
        s3 = output;
    }
    static public void g1f(String pattern, double value ) {
        DecimalFormat myFormatter = new DecimalFormat(pattern);
        String output = myFormatter.format(value);
        k1 = output;
    }

Ho messo a tutti un THANKS, grazie.
« Ultima modifica: 11 Agosto 2015, 16:08:16 CEST da Dr.Joek »