[英]Double.Parse for Native language support
我的價值20,55
是德語。
當我將區域設置更改為US時,運行此代碼后,該值顯示為2055.0
:
double d = Double.Parse("20,55",CultureInfo.CurrentCUCulture);
這是為什么?
因為在美國,
是千分隔符,它被忽略了嗎? 以同樣的方式在德國(和歐洲大陸) .
是千分隔符,它被忽略了?
在德國你寫:1.000,55。 在美國你寫:1,000.55(有思想的一些學校中刪除,
如果有一個數字之前那么1000.55和11,000.55)。
現在,如果您想確保您的程序使用de-DE
文化,請在任何地方作為參數傳遞
CurrentCulture culture = new CultureInfo("de-DE");
double d = double.Parse("20,55", culture);
在美國,小數分隔符是.
不是,
。 如果你試圖解析20,55
,它(顯然)會忽略逗號作為標准三元組分隔符(例如在1,234,567.89
),即使它們都沒有三位數。
如果要解析歐式數字,則需要使用歐式文化設置進行解析。
這是因為美國小數分隔符是.
而不是,
。
如果您想要避免該問題,無論用戶的區域設置如何,您都可以編寫擴展方法:
public static String ToRegionalNumber(this String str) {
String regionalNb = str.Replace(",", NumberFormatInfo.CurrentInfo.NumberDecimalSeparator);
regionalNb = regionalNb .Replace(".", NumberFormatInfo.CurrentInfo.NumberDecimalSeparator);
return regionalNb ;
}
在使用您的號碼時調用此方法:
double d = Double.Parse("20,55".ToRegionalNumber());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.