Flotteur supérieur ou inférieur à zéro

J'ai le code suivant qui, parfois, de retour en tant que vrai et n'a parfois pas.

Une idée de ce que pourrait être la cause de la variation de résultat?

L'0.00 chaîne vient d'un objet JSON.

(code simplifié)

if(new Float("0.00")>0){
    //do something
}

EDIT:

Ce que j'ai est certains chars que je veux déterminer si son zéro, à moins de zéro ou plus de zéro. Les valeurs peuvent être des choses comme 0.00, de 0,001 ou -0.001. Comment puis-je déterminer si les si elles sont positives, négatives ou nulles?

EDIT:

Peut-être que je me dois de préciser la façon dont je reçois les valeurs. Je suis peut-être totalement autre chose qui est à l'origine du problème, car j'ai lu sur BigDecimal et a essayé de l'utiliser en vain.

Les valeurs sont extraites à partir d'un flux JSON (qui a ce format LT:0.000) à l'aide de ce code:

price = new BigDecimal(stocksJSONArray.getJSONObject(i).getString("LT"));

Ensuite tester si le prix est supérieur ou inférieur à zéro, j'ai utilisé suivant les instructions conditionnelles:

if(price.compareTo(BigDecimal.ZERO)==1){
    //greater than zero
}
else if(price.compareTo(BigDecimal.ZERO)==-1){
    //less than zero
}

Ce code est lu en boucle sur le nombre de valeurs lues sur les flux JSON. Et à partir des résultats, certains price qui est à zéro est traitée comme supérieur à zéro et une partie est traitée comme moins que zéro. Je suis à soupçonner que quelque chose d'autre est à l'origine du problème?

J'ai aussi fait un test pour voir si le problème était avec la précision des données. J'ai donc fait ceci:

DecimalFormat frmt = new DecimalFormat("0.000000000000000000000000");
String formatted = frmt.format(stock.change);

Et pour les zéros qui les a reconnus comme étant des aspects positifs et négatifs, la trace de la valeur pour elle était encore 0.000000000000000000000000, pas 0.000000000000000000000001 ou quelque chose comme ça.

Les réponses données sont correctes, mais pas dans votre situation dans laquelle le résultat ne doit pas varier. Êtes-vous sûr que 0.00 est toujours analysée comme il est? Et êtes-vous sûr que la valeur à laquelle le flotteur est initialisé n'est pas le résultat d'autres flottent des opérations?
Voir Ce que Tout informaticien Devez Savoir à Propos de l'Arithmétique à virgule Flottante pour plus de détails. Notez que j'ai supprimé ma réponse, puisque j'ai été apparemment mal en plus de ce que je disais. Il y a des gens beaucoup plus expert en la matière.

OriginalL'auteur mushroom | 2012-04-30