用一个M或B解析一个双字符串

时间:2017-04-21 01:54:54

标签: c#

是否有解析方法,例如:

1,250,000 = 1.25M
10,000,000 = 10M
10,500,000 = 10.5M
47,600,000,000 = 47.6B

换句话说,我需要将47.6B解析为double。我知道我可以手动执行此操作,我想知道是否有直接的方法,比如使用IFormatter

2 个答案:

答案 0 :(得分:2)

不,.Net框架中没有这样的方法(并且没有相反的方法可以格式化这样的值)。

您需要找到自己编写的库或自己编写方法。

请注意,K / M可能意味着2 ^ 10/2 ^ 20或10 ^ 3/10 ^ 6并且可能是特定于语言的(同样,此信息在.Net框架中不存在,您可以从{{1信息)

答案 1 :(得分:0)

可以调整此处的一些代码:

只需指定您自己的已识别十进制“收缩”单位列表:

59

然后就这样使用它:

Nothing -> 1.0

在解析器中使用 static FileSizeConverter() { // decimal "contraction" units knownUnits = new Dictionary<string, long> { { "", 1L }, { "M", 1000L * 1000L }, // million { "B", 1000L * 1000L * 1000L } // billion (usa) // fill rest as needed }; numberFormat = System.Globalization.CultureInfo.CurrentCulture.NumberFormat; } ,或者如果您需要,则从 var converter = new FileSizeConverter(); Console.WriteLine(converter.Parse("1.25M")); Console.WriteLine(converter.Parse("10M")); Console.WriteLine(converter.Parse("10.5M")); Console.WriteLine(converter.Parse("47.6B")); 转换为double

decimal