将此字符串转换为十进制

本文关键字:十进制 转换 字符串 | 更新日期: 2023-09-27 18:33:30

听起来很容易,但是当我试图实现时,我对如何进行此转换的格式化程序感到满意,这是我需要转换为十进制的一些字符串示例

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 基本相同的配置)。