2009-12-28 181 views
2

我有一個十進制數是這樣的:十進制鑄造

62.000,0000000

我需要的是十進制投轉換成int;它將始終有零小數;所以我不會放鬆任何精度。我想是這樣的:

62.000

存儲在C#int變量。

我嘗試了很多方法,但它總是給我一個錯誤,該字符串是不正確的格式,這是我tryied的方法之一:

int.Parse("62.000,0000000"); 

希望你能幫助我,謝謝。

+3

你的操作系統是什麼語言?小數點/逗號和千位分隔符可能存在問題。 – ChrisF 2009-12-28 19:24:30

回答

12

你需要解析它在正確的文化。例如,德國文化使用「。」作爲一個羣體分離器和「」作爲小數點分隔符 - 所以此代碼的工作:

CultureInfo german = new CultureInfo("de-DE"); 
decimal d = decimal.Parse("62.000,0000000", german); 
int i = (int) d; 

Console.WriteLine(i); // Prints 62000 

是你以後在做什麼?請注意,這將失敗,如果你提出一個不同的文化格式的數字...

編輯:由於裏德在他的評論中提到,如果你真正的文化是西班牙,然後交換「德DE」爲「 ES-ES「爲好的措施。

+1

完美答案 - 僅供參考 - 我很確定(來自其他帖子),來自西班牙的lidermin,使用「es-ES」應該給他適當的文化。 – 2009-12-28 19:44:17

2

爲什麼不把它轉換爲int而不是解析?

+0

他的例子使用字符串。那麼誰知道他從哪裏得到這個數字,以及他是否可以更改小數點的傳遞以便不顯示點和逗號並省略不必要的精度? – 2009-12-28 19:33:14

7

您需要正確指定文化:

var ci = CultureInfo.CreateSpecificCulture("es-ES"); 
int value = (int) decimal.Parse("60.000,000000", ci); 

如果你這樣做,它會正確地轉換次數。