将此字符串转换为十进制
本文关键字:十进制 转换 字符串 | 更新日期: 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 基本相同的配置)。