将此字符串转换为十进制

听起来很简单但是当我试图实现我关于格式化程序如何进行此转换时,这是我需要转换为十进制的一些字符串示例

00.24 48.34 01.24 

有谁知道我怎么能完成这个? 我试过这样的

 try { decimal x = Convert.ToDecimal("00.24", ); //Which formatter do I need to pass?? decimal x = Convert.ToDecimal("00.24", Formatter???); } Catch(Exception e) { throw new Exception() } 

但它不起作用,因为它的结果是24D,我需要0.24D

我怀疑您的系统文化不是英语,并且具有不同的数字格式规则。 尝试将不变文化作为格式提供者传递:

 decimal d = Convert.ToDecimal("00.24", CultureInfo.InvariantCulture); 

你也可以使用Decimal.Parse

 decimal d = Decimal.Parse("00.24", CultureInfo.InvariantCulture); 

为什么不直接使用Decimal.Parse

 decimal x = Decimal.Parse("00.24"); Console.WriteLine(x); // Prints: 00.24 

我认为Decimal.TryParse应该可行。 更多信息在这里 。

你得到的结果是因为点. 被视为一组(千)分隔符。 解析器只是丢弃它,并不检查组大小是否正确。 因此’20 .100.200’或’1.2.3.4’也将被解析为20100200和1234。

这发生在许多欧洲文化中,比如’es’

你必须使用任何不考虑的文化. 作为组分隔符,但作为小数分隔符。 CultureInfo.InvariantCulture是可能的文化之一(它与en-US的配置基本相同)。