web-dev-qa-db-fra.com

Comment éviter la notation scientifique en double?

Voici mon code simple

        @Override
    public void onClick(View v) {
        try {
            double price = Double.parseDouble(ePrice.getText().toString());
            double percent = Double.parseDouble(ePercent.getText().toString());

            double priceValue = price * percent/100.0f;
            double percentValue = price - priceValue;

            moneyToGet.setText(String.valueOf(priceValue));
            moneyToPay.setText(String.valueOf(percentValue));

            moneyToGet.setText("" + priceValue);
            moneyToPay.setText("" + percentValue);

            // catch
        } catch (NumberFormatException ex) {
            // write a message to users
            moneyToGet.setText("");
        }
    }

});

Ceci est un code simple pour la calculatrice de pourcentage.

Ce que je veux, c'est éviter la Notation scientifique dans mon calculateur car je ne veux pas expliquer à l'utilisateur ce qu'est la notation scientifique.

Par exemple si je veux calculer 100 000 000 et couper 50% de cela, il devrait me donner 50 000 000 qui me donne 5.0E7 Et dans mon cas cela n'a aucun sens pour l'utilisateur. Et bien sûr, je sais que les deux résultats sont corrects. Merci d'avance.

13
user3051834

Vérifiez la réponse ici . Tu peux écrire 

moneyToGet.setText(String.format("%.0f", priceValue));
12
Josef Raška

Vous pouvez essayer ce DecimalFormat  

DecimalFormat decimalFormatter = new DecimalFormat("############");
number.setText(decimalFormatter.format(Double.parseDouble(result)));
6
Kirk

Je suggérerais d'utiliser BigDecimals au lieu de doubles. De cette façon, vous aurez un contrôle plus précis sur votre précision de calcul. Vous pouvez également obtenir une String non scientifique en utilisant BigDecimal.toPlainString().

2
GareginSargsyan
DecimalFormat decimalFormatter = new DecimalFormat("##.############");
                    decimalFormatter.setMinimumFractionDigits(2);
                    decimalFormatter.setMaximumFractionDigits(15);

Cette option vous aidera avec ##. ## suffixe 0 avant le point décimal, sinon la sortie sera .000

 btc.setText(decimalFormatter.format(btcval));

utiliser ceci pour afficher du contenu

1
Chirag Joshi

Utilisez NumberFormater comme

NumberFormat myformatter = new DecimalFormat("########");  

String result = myformatter.format(yourValue);
0
insomniac