2009-12-28 231 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); 

如果你这样做,它会正确地转换次数。