2012-05-02 80 views
0

我有一個對象,CellData,即等於-0.000009482102880653542如何將小數轉換爲字符串而不替換小數?

我想在將它作爲.csv文件導出時按原樣顯示。要做到這一點,我必須將對象轉換爲字符串。

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

以上兩例導致output-9.48210288065354E-06。我希望它返回output作爲-0.0000094821028806535423(帶小數)。

無論如何我可以得到這個工作嗎?

+0

看看[標準數字格式字符串](http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx)。 – svick

回答

-1

嘗試沒有

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

只留下

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

它可能會縮短執行時間的毫秒數,但對我來說代碼將更難以破譯。看起來很難得到任何這些參數來輸出所有數字而不截斷或拖尾零,結果仍然只有雙精度,截斷兩個數字與問題中的數字。 – TheEvilPenguin

+0

如果你有一個'double',那麼將它轉換爲'decimal'可能會顯示更多數字的精度,但這並不意味着數字實際上更準確,事實並非如此。而對於我來說,由於格式化轉換爲其他數據類型將難以破譯。 – svick

相關問題