2011-04-13 5 views
0

Ceci est mon code:Que fait exactement le format décimal?

float result=(float) ((new Float(result1)*0.3)+(new Float(result2)*0.7)); 
String a=dec.format(result); 
vprosvasis.setText(a); 

Si je vprosvasis quelque part ailleurs dans mon application, il aura le prix a.

Par exemple, si mon résultat est 12,34, a seront 12,3 si vprosvasis sera 12,3 si j'écrire

float genikosvathmos = ((new Float(vprosvasis.getText().toString()) + 
         new Float(vprosvasis2.getText().toString()) + 
         new Float(vprosvasis3.getText().toString()) + 
         new Float(vprosvasis4.getText().toString()) + 
         new Float(vprosvasis5.getText().toString()) + 
         new Float(vprosvasis6.getText().toString()))/6); 
+6

Wow, c'est beaucoup de boxe et unboxing complètement inutiles. Mais quelle est exactement votre question? –

+3

Je vous suggère d'utiliser 'double' au lieu de' Float', est 'getText()' pas déjà une chaîne? –

+0

NE JAMAIS utiliser Float même si ce n'est pas nécessaire !!!! Double utilisation à la place – Franky

Répondre

1

suggère d'utiliser les primitives (plus précisément, double) plutôt que des enveloppes d'objets (sauf si vous avez des besoin que vous ne montrez pas ici).

Ensuite, regardez le Double javadoc, en particulier les méthodes utilitaires statiques:

http://download.oracle.com/javase/6/docs/api/java/lang/Double.html

double myDouble = Double.parseDouble(myString); 
String s = Double.toString(myDouble); 
1

Le but de DecimalFormat est de formater des nombres sous forme de texte d'une manière spécifique à la localisation. (Il peut également être utilisé pour analyser un format numérique spécifique à un environnement local au type Number approprié.) Par exemple, dans les paramètres régionaux anglais américain, une période ('.') est utilisée comme point décimal, plutôt qu'une virgule (',').

Il est important de noter que le String produit par un DecimalFormat est très susceptible d'être incompatible avec le format requis pour le constructeur Float(String). Le format de chaîne utilisé par Float n'est pas spécifique aux paramètres régionaux. Il s'agit d'un format fixe identique à celui spécifié par la spécification de langage Java pour les littéraux float dans le code source Java.

Si vous effectuez des calculs avec de l'argent, n'utilisez pas de type à virgule flottante comme float ou double. Utilisez des instances de java.math.BigDecimal à la place. Ce type effectue une arithmétique exacte et lorsque l'arrondi est effectué, vous pouvez contrôler l'arrondi pour vous conformer à vos pratiques comptables.

1

Comme Daniel, je ne suis pas sûr de ce que vous essayez d'obtenir de ce post. Mais je vais répondre à la question que vous avez posée dans votre titre à sa valeur nominale.

Vous n'incluez pas le code où dec est déclaré, ou tout code sur lequel il est utilisé, mais du contexte il semble être une instance de the DecimalFormat class. Si oui, il prend result, qui est un float, et faire les choses suivantes:

  1. élargissement à long
  2. en utilisant la method format(double number) héritée de NumberFormat pour obtenir la représentation String de result
  3. stocker le résultat dans a
+1

Wouldn'ta 'float' être élargi à un double pour la [' 'surcharge double' de format()'?] (Http://download.oracle.com/javase/6/docs/api /java/text/NumberFormat.html#format%28double%29) – erickson

+0

@erickson, oui, en effet! Typo stupide de ma part; J'ai même lié à la bonne méthode. Fixer maintenant. – Pops