Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 十进制转换_C#_Formatting - Fatal编程技术网

C# 十进制转换

C# 十进制转换,c#,formatting,C#,Formatting,我有这样一个十进制数: 62.0000000000 我需要把小数转换成int;它总是有零个十进制数;所以我不会失去任何精确性。我想要的是: 62000 存储在c#中的int变量上 我尝试了很多方法,但它总是给我一个错误,字符串的格式不正确,这是我尝试的方法之一: int.Parse("62.000,0000000"); 希望您能帮助我,谢谢。为什么不将其转换为int而不是解析?您需要在正确的区域性中解析它。例如,德国文化使用“.”作为组分隔符,使用“.”作为十进制分隔符,因此此代码可以工作:

我有这样一个十进制数:

62.0000000000

我需要把小数转换成int;它总是有零个十进制数;所以我不会失去任何精确性。我想要的是:

62000

存储在c#中的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”应该给他适当的文化。