2012-05-02 3 views
0

-0.000009482102880653542に等しいオブジェクトCellDataがあります。小数点を置き換えずに小数点を文字列に変換するにはどうすればよいですか?

.csvファイルとしてエクスポートするときにそのまま表示したいと思います。これを行うには、オブジェクトを文字列に変換する必要があります。

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

上記2つのケースが-9.48210288065354E-06あるoutputもたらします。 output-0.0000094821028806535423(小数点付き)に返すことをお勧めします。

とにかく私はこれを得ることができますか?

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

なし

+0

[標準数値形式の文字列](http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx)を参照してください。 – svick

答えて

-1

てみあなたは小数として番号を保存している場合、それは非科学的な(通常の)表記で出力のみとなります

output = CellData.ToString(); 
+0

CellData.ToString()はゼロを切り捨てます。私はフォーマットを使ってこれを得ることができると知っていますが、ゼロを切り捨てるフォーマットを得ることはできません。 – MSNetDev

1

を残します。データがどこから来ているに応じて、あなたはダブルから変換する必要があります。

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

は(-0.00000948210288065354います)、またはあなたが直接進数を使用することができる場合があります

Object CellData = -0.0000094821028806535423m; 

結果doubleからdoubleに変換すると精度はそれほど正確ではありません。倍精度はすべての数値を正確に表すことはできません。また、より多くの計算を実行するほど正確な結果が得られる可能性があります。

番号がコード内で発生しており、計算を行う必要がない場合は、文字列として直接格納することもできます。

+0

数字を文字列に変換したい場合、それを 'decimal'に変換するのは意味がありません。正しいフォーマットパラメータで 'ToString()'を使うだけです。 – svick

+0

実行時間を数ミリ秒短縮できますが、コードを解読するのがはるかに難しくなります。これらのパラメータのいずれかを切り捨てまたは末尾のゼロを使わずにすべての桁を出力することは難しいようですが、その結果は依然として最大2倍の精度しか持たず、問題の数値で2桁の数字を切り捨てます。 – TheEvilPenguin

+0

'double'をお持ちの場合、それを' decimal'に変換するとより多くの精度で表示されるかもしれませんが、実際には数値が実際より正確であるとは限りません。私にとっては、書式設定のために他のデータ型に変換するのは難しいでしょう。 – svick

関連する問題