簡體   English   中英

驗證文化中的小數

[英]validating decimal numbers in culture

誰能解釋為什么在“ en-GB”區域性格式中,decimal.Parse()函數將對1,5返回15?

輸入1.5時,我看到的'de'文化結果相同,返回值為15。

我知道這在程序上是正確的,我只是想了解為什么這是正確的。 我已經用谷歌搜索了,什么都沒有:(

我試圖根據文化驗證用戶輸入,並在解析失敗時用0填充輸入字段,但是當他們輸入1,5時用15填充字段感覺不對,我覺得應該輸入英語格式的1.5時返回“失敗”,而不是返回15。

    try {
        validateSource.Text = decimal.Parse(validateThis, NumberStyles.Number, UserCulture).ToString();
    } catch {
        validateSource.Text = "0";
    }

,是英國文化中的NumberGroupSeparator 沒有關於每個組中有多少位數的驗證。 因此“ 1,2,3”將被解析為123,即使這不是我們通常期望的那樣。

雖然解析檢查NumberGroupSizes屬性是NumberGroupSizes ,但事實並非如此。

您可以通過格式化解析結果的方式以非常原始的方式模擬此檢查,並查看其是否等於原始輸入:

decimal value;
if (decimal.TryParse(text, NumberStyles.Number, culture, out value))
{
    if (text != value.ToString("N", culture))
    {
        // Okay, looks like something's up... report an error
    }
}

當然,這將阻止某人輸入“ 1234.56”,因為它期望的是“ 1,234.56” ...您可能想要檢查多種模式格式,例如“ N”和“ G”,以查看其是否與它們中的任何一種匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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