我有一个这样的十进制数字:
62.000,0000000
我需要将该十进制转换为int;它总是有零十进制数;所以我不会失去任何精度。我想要的是这个:
62.000
存储在c#中的int变量中。
我尝试了很多方法,但它总是给我一个错误,字符串的格式不正确,这是我尝试过的方法之一:
int.Parse("62.000,0000000");
希望你能帮助我,谢谢。
答案 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而不是解析?