2

私はここでガボンの通貨フォーマットを使用して数値を解析しようとしています。

形式は「。」を使用します グループの区切りと小数点なしの場合。

次に例を示します。

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
        }
    }
}

足りないものはありますか?

4

2 に答える 2

3

あなたの場合、.NETを少し助ける必要があります-Parseそのように単純に使用するとき、それはあなたが番号を取得したいと思っていることを前提としています。フランスの文化では,小数点として使用されているため、コードで例外がスローされます。

代わりに、これを試してください。

double.Parse("300.000", NumberStyles.Currency, ci).ToString("C");

ciこれで、カルチャで指定した通貨ルールに従って、文字列が通貨として正しく解析されます。

そして-他の人が言っているように、あなたはdecimal通貨を扱うときに本当に使うべきです。Doubleは単に十分に正確ではありません。

于 2012-07-23T20:21:17.707 に答える
1

これを追加します:ci.NumberFormat.NumberGroupSeparator="。";

于 2012-07-23T20:23:01.973 に答える