十进制铸造

时间:2009-12-28 19:21:40

标签: c# formatting

我有一个这样的十进制数字:

62.000,0000000

我需要将该十进制转换为int;它总是有零十进制数;所以我不会失去任何精度。我想要的是这个:

62.000

存储在c#中的int变量中。

我尝试了很多方法,但它总是给我一个错误,字符串的格式不正确,这是我尝试过的方法之一:

int.Parse("62.000,0000000");

希望你能帮助我,谢谢。

3 个答案:

答案 0 :(得分:12)

您需要在正确的文化中解析它。例如,德国文化使用“。”作为组分隔符和“,”作为小数分隔符 - 所以此代码有效:

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

Console.WriteLine(i); // Prints 62000

这就是你要追求的吗?请注意,如果您使用在不同文化中格式化的数字显示它,则会失败...

编辑:正如里德在他的评论中提到的那样,如果你的真实文化是西班牙,那么就可以用“es-ES”换取“de-DE”。

答案 1 :(得分:7)

您需要正确指定您的文化:

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

如果您这样做,它将正确转换数字。

答案 2 :(得分:2)

为什么不将它转换为int而不是解析?