C# 十进制转换
我有这样一个十进制数: 62.0000000000 我需要把小数转换成int;它总是有零个十进制数;所以我不会失去任何精确性。我想要的是: 62000 存储在c#中的int变量上 我尝试了很多方法,但它总是给我一个错误,字符串的格式不正确,这是我尝试的方法之一:C# 十进制转换,c#,formatting,C#,Formatting,我有这样一个十进制数: 62.0000000000 我需要把小数转换成int;它总是有零个十进制数;所以我不会失去任何精确性。我想要的是: 62000 存储在c#中的int变量上 我尝试了很多方法,但它总是给我一个错误,字符串的格式不正确,这是我尝试的方法之一: int.Parse("62.000,0000000"); 希望您能帮助我,谢谢。为什么不将其转换为int而不是解析?您需要在正确的区域性中解析它。例如,德国文化使用“.”作为组分隔符,使用“.”作为十进制分隔符,因此此代码可以工作:
int.Parse("62.000,0000000");
希望您能帮助我,谢谢。为什么不将其转换为int而不是解析?您需要在正确的区域性中解析它。例如,德国文化使用“.”作为组分隔符,使用“.”作为十进制分隔符,因此此代码可以工作:
CultureInfo german = new CultureInfo("de-DE");
decimal d = decimal.Parse("62.000,0000000", german);
int i = (int) d;
Console.WriteLine(i); // Prints 62000
这就是你想要的吗?请注意,如果您使用在不同区域性中格式化的数字呈现,则此操作将失败
编辑:正如里德在评论中提到的,如果你真正的文化是西班牙,那么就用“de de”换成“es”作为衡量标准。你需要正确地指定你的文化:
var ci = CultureInfo.CreateSpecificCulture("es-ES");
int value = (int) decimal.Parse("60.000,000000", ci);
如果您这样做,它将正确转换数字。您的操作系统是什么语言?小数点/逗号和千位分隔符可能有问题。他的示例使用字符串。那么谁知道他是从哪里得到这个数字的,如果他能改变十进制的形式,不显示点和逗号,省略不必要的精度呢?完美的答案-仅供参考-我非常肯定(从其他帖子中的一篇),利德明来自西班牙,所以使用“es”应该给他适当的文化。