2011-12-09 34 views
0

我希望能夠轉換小數長 - 總是缺少點分隔

varchar > decimal > long 

dbreader[11]持有3319419,13爲varchar

例如:

decimal d = Convert.ToDecimal(dbreader[11], CultureInfo.InvariantCulture); 

我得到

d = 3319419.13M 

當我將它轉換爲長對象我結束了

long i = 3319419 

我想結束了3319419,1

+4

長是一個8字節的整數(整數) – craig1231

+1

不是一個C#開發人員我可能是錯的,但不是一個整數數據類型?你是否期望整數持有一個浮點數? –

+1

要澄清,你想要顯示的數字作爲文本,即「3319419,1」,或將數字四捨五入到一位小數,即3319419.1? – harriyott

回答

2

long你不能3319419,1結束了,因爲long是整數。 嘗試使用double代替。

編輯:現在,double恰好是一個浮點數。這意味着此類型能夠表示的小數位數不是固定的,而是可變的。所以,如果你想看到一個特定的小數位數,那麼這完全是一個顯示問題。所以,爲了看到你的雙變量只有一個數字,將其轉換爲字符串如下:String.Format("{0:00.0}", my_double_variable);

0

long是一個8字節的整數(整數)。如果您需要更高的精度,請使用雙精度(8字節小數)

3

它永遠不會,我害怕。 longSystem.Int64的同義詞 - 64位整數值,因此無法存儲您要求的精度。見here

0

現實檢查。

3319419,1

長是無法保持部分的數字。 1,2,3 - 不是1,1.1,1.2。這是一個很長的定義。因此,無論您想要什麼,您都無法將分數值保留很長一段時間。想要保留小數值 - 使用可以的數據類型。

0

A long沒有任何小數。它是一個整數類型。

您可能想要使用double,或將其保留爲decimal