十进制铸造

lid*_*min 2 c# formatting

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

62.000,0000000

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

62.000

存储在c#中的int变量上.

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

int.Parse("62.000,0000000");
Run Code Online (Sandbox Code Playgroud)

希望你能帮助我,谢谢.

Jon*_*eet 12

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

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

Console.WriteLine(i); // Prints 62000
Run Code Online (Sandbox Code Playgroud)

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

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


Ree*_*sey 7

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

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

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