簡體   English   中英

Double.Parse支持本地語言

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM