2011-06-28 12 views
7

なぜこれらの設定でdouble.TryParse()DefaultCultureが桁区切り記号としてドット.を有するSL-SI(スロベニア)、及び、小数点以下の通りである解析番号

double.TryParse("1.035,00", 
NumberStyles.AllowCurrencySymbol | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | 
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, 
GlobalSettings.Instance.DefaultCulture, out price); 

を解析しません。 priceは、解析後に0のままです。

?あなたはNumberStyles.AllowThousandsが欠落している

+0

のために働きました。あなたの例では、TryParseは 'false'を返します。したがって、 'price'が' 0'である原因は、文字列を解析できなかったことです。 – dtb

+3

私は、一部の人がローカリゼーションのため投票に近いと奇妙に思う。問題が文化ならば、多くの文化に影響を及ぼしますが、小数点区切り記号としてカンマを使用したすべての人々は、ISO標準とほとんどの国で使用されている表現である –

答えて

6

double.TryParse("1.035,00", NumberStyles.AllowCurrencySymbol | 
          NumberStyles.AllowLeadingWhite | 
          NumberStyles.AllowTrailingWhite | 
          NumberStyles.AllowDecimalPoint | 
          NumberStyles.AllowLeadingSign | 
          NumberStyles.AllowThousands, 
          GlobalSettings.Instance.DefaultCulture, out price); 
+0

が完璧です、ありがとう – mare

2

これは、値を解析すると、成功したか失敗したかどうかを示す `bool`を返すTryParse私

double.TryParse("1.035,00", 
NumberStyles.Any, 
GlobalSettings.Instance.DefaultCulture, out price); 
+0

誰かがNumberStyles.Anyそれに潜在的な問題がある場合は、感覚ですか? – mare

+1

MSDNによる** AllowHexSpecifierを除くすべてのスタイルが使用されることを示します。これは複合ナンバースタイルです。** – V4Vendetta

関連する問題