La conversion de la valeur exponentielle en java pour un format de nombre
Je suis en train de lire les valeurs de la feuille excel à l'aide de java. Quand je tape plus de 10 lettres dans une cellule dans excel, il est de l'affichage de forme exponentielle comme "9.78313 E+2". mais ce n'est pas le nombre réel de ce que j'ai donné.
Tout organisme peut m'aider dans cette. Comment puis-je convertir au-dessus de la forme exponentielle de nombre d'origine à l'aide du langage java.
Merci d'avance
- Vous devez nous montrer le nombre que vous avez dans l'excel et le résultat en Java.
9.78313E+2
=978.313
Êtes-vous confus valeur avec format.double
ne préserve pas le format de la valeur.
Vous devez vous connecter pour publier un commentaire.
me donne
Pour plus d'info voir le doc.
Suite à vos questions ci-dessous, si vous avez entré
4256411411
et Excel est de présenter ce que4.26E+09
, mettre cette valeur dansparseDouble()
ne fera que vous donner4260000000
. Si vous voulez l'original, peut-être vous avez besoin de générer le fichier Excel dans une meilleure format de votre programme Java, et/ou d'une requête à l'aide d'une Java/Excel API (par exemple PI)Vous pouvez convertir comme suit,
par exemple:
Avant de lire la valeur sur la feuille excel format de votre Colonne de nombre.
Cette peut être de l'aide
Mis à JOUR
Vous pouvez utiliser
BigDecimal
, si vous voulez la valeur exacte que vous avez dansExcel Sheet
: -Impressions: -
BigDecimal
?double
type. Mais dans le type de Chaîne.scanCode
?Désolé, mais aucune des réponses ci-dessus
Double.parseDouble()
etDouble.valueOf()
... résolu mon problème, et j'ai continué à obtenir de l'exponentielle 'E' de la valeur...Cette lien a une bien meilleure approche pour le problème, et comme je l'ai écrit, il y a une très bonne solution:
J'avais besoin de convertir une sorte de double de la valeur des devises, et de mouillage que la plupart de la solution sont OK mais pas pour moi.
La
DecimalFormat
a finalement été le moyen pour moi, c'est ce que j'ai fait:Comme vous pouvez le voir, si le nombre est naturel je obtenir - dire - 20000000 au lieu de 2E7 (etc) - sans point décimal.
et si c'est décimal, je ne reçois que 2 chiffres après la virgule.
Espère que cela aidera.
Vous pouvez convertir facilement avec les méthodes suivantes:
Double.valueOf("9.78313E+2").longValue()
ouEn supposant que le nombre donné est dans une forme d'une Chaîne.
Ont pour convertir la cellule dans le format de nombre avant de lire la valeur de la cellule. Ci-dessous l'extrait de code qui est utilisé pour obtenir la valeur réelle qui est dans le format exponentiel:
Blog a été wirtten pour mettre en valeur le résultat réel.
Ce qui concerne,
Ankur
Vous pouvez également utiliser les classes wrapper :
Sorties
-4445566622