我在这里尝试使用加蓬货币格式解析数字。
格式使用“.”用于组分隔且无小数。
这是一个例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Threading;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
CultureInfo ci = new CultureInfo("fr-FR");
ci.NumberFormat.CurrencyGroupSeparator = ".";
ci.NumberFormat.CurrencyDecimalDigits = 0;
ci.NumberFormat.CurrencySymbol = "CFA";
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
double.Parse("300.000", ci).ToString("C");
// gives me a FormatException
}
}
}
我有什么遗漏的吗?
最佳答案
就你的情况而言,你必须帮助 .NET 一点 - 当简单地使用 Parse
时,它假设你想要获取一个数字。法国文化使用 ,
作为小数点分隔符,这就是您的代码引发异常的原因。
试试这个:
double.Parse("300.000", NumberStyles.Currency, ci).ToString("C");
现在,该字符串将被正确解析为货币,并遵守您在 ci
区域性中指定的货币规则。
并且 - 正如其他人所说,在处理货币时您应该真正使用十进制
。 Double 就是 not precise enough .
关于c# - 使用特定文化的 Double.Parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11619796/