听起来很简单但当我试图实现我的格式化格式化程序如何进行此转换时,这是我需要转换为十进制的字符串的一些示例
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
答案 0 :(得分:5)
我怀疑您的系统文化不是英语,并且具有不同的数字格式规则。尝试将不变文化作为格式提供者传递:
decimal d = Convert.ToDecimal("00.24", CultureInfo.InvariantCulture);
您也可以使用Decimal.Parse
:
decimal d = Decimal.Parse("00.24", CultureInfo.InvariantCulture);
答案 1 :(得分:3)
为什么不使用Decimal.Parse
decimal x = Decimal.Parse("00.24");
Console.WriteLine(x); // Prints: 00.24
答案 2 :(得分:2)
我认为Decimal.TryParse应该可行。更多信息here。
答案 3 :(得分:1)
您获得的结果是因为点.
被视为一个组(千)分隔符。解析器只是丢弃它,并不检查组大小是否正确。所以'20 .100.200'或'1.2.3.4'也会被解析为20100200和1234。
这种情况发生在许多欧洲文化中,比如'es'
您必须使用任何不将.
视为组分隔符的文化,而是使用小数分隔符。 CultureInfo.InvariantCulture
是可能的文化之一(它与en-US的配置基本相同)。