2012-05-02 3 views
0

J'ai un objet, CellData, c'est-à-dire -0.000009482102880653542.Comment convertir une décimale en chaîne sans remplacer les décimales?

Je souhaite l'afficher tel quel lors de l'exportation en tant que fichier .csv. Pour ce faire, je dois convertir l'objet en une chaîne.

output = CellData.ToString(); 
output = string.Format("{0}", CellData); 

Les deux cas ci-dessus donnent lieu à output être -9.48210288065354E-06. Je voudrais qu'il renvoie output en tant que -0.0000094821028806535423 (avec des décimales).

Y at-il de toute façon que je peux obtenir ce travail?

+0

Jetez un coup d'œil à [Chaînes de format numérique standard] (http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx). – svick

Répondre

-1

Essayez sans

output = string.Format("{0}", CellData); 

Laisser seulement le

output = CellData.ToString(); 
+0

CellData.ToString() tronque les zéros. Je sais que nous pouvons obtenir cela en utilisant des formats, mais je ne peux obtenir aucun format qui arrête de tronquer les zéros. – MSNetDev

1

Si vous enregistrez le numéro comme décimal, il sortira en notation non-scientifique (normal). Selon l'endroit où les données proviennent de, vous devrez peut-être convertir double:

double myNumber = -0.0000094821028806535423; 
Object CellData = new Decimal(myNumber); 

(donne -0,00000948210288065354), ou vous pouvez être en mesure d'utiliser directement une décimale:

Object CellData = -0.0000094821028806535423m; 

Le résultat est moins précis si vous convertissez à partir du double comme un double ne peut pas représenter exactement tous les nombres, et plus vous effectuez de calculs, plus ils peuvent aboutir à un résultat exact.

Si le numéro provient de votre code et que vous n'avez pas besoin d'effectuer de calculs, vous pouvez également le stocker directement en tant que chaîne.

+0

Si vous voulez convertir le nombre en chaîne, cela n'a aucun sens de le convertir en 'decimal'. Utilisez simplement 'ToString()' avec le paramètre de format correct. – svick

+0

Il peut supprimer des millisecondes du temps d'exécution, mais pour moi ce code serait beaucoup plus difficile à déchiffrer. Il semble difficile d'obtenir l'un de ces paramètres pour afficher tous les chiffres sans les zéros de troncature ou de fin, et le résultat aura toujours jusqu'à double précision, tronquant 2 chiffres avec le nombre dans la question. – TheEvilPenguin

+0

Si vous avez un 'double', alors le convertir en' decimal' peut afficher plus de chiffres de précision, mais cela ne veut pas dire que le nombre est réellement plus précis, ce n'est pas le cas. Et pour moi, la conversion à un autre type de données en raison du formatage serait difficile à déchiffrer. – svick

Questions connexes