2016-10-06 91 views
0

我來自意大利,所以這裏的小數點分隔符是',',密碼是由char'分組的。 爲了簡短起見,我們必須處理數字,當用戶不更改全局格式時,只能通過高級設置更改分隔符和組char。強制小數分隔符時解析長/雙/浮點數

請看看下面的圖片: enter image description here

你可以看到,格式仍是意大利人,但通過以下高級設置: enter image description here

所以你可以看到,儘管保持全球意大利語設置我強制小數點分隔符爲',',密碼組char爲''。

這就是說我必須決定一個字符串是否是數字。要做到這一點我使用以下s/r

public static bool IsNumeric(this string theValue) 
{ 
    long retNum; 
    return long.TryParse(theValue, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out retNum); 
} 

事實是,long.TryParse失敗。當值爲「14.142135624」時,我得到一個0 retNum值。

想招惹其他的NumberStyles和的NumberFormatInfo值,但沒有得到任何有用

感謝任何幫助。

回答

1

正如我們發現它與NumberStyles枚舉無關,但與您試圖解析的數據類型無關。

您試圖將包含十進制數的字符串解析爲整型值類型。

您應該將呼叫從long.TryParse更改爲decimal.TryParse,否則它將不起作用,因爲該值絕對不是浮點數的整數。

+0

正如我所說的我一直在嘗試NumberStyles(特別是AllowDecimalPoint,任何,浮動,無,數字),但沒有工作。 – Patrick

+0

然後 - 因爲它是一個浮點數 - 嘗試'decimal.TryParse()'也許? – Adwaenyth

+0

太棒了!它甚至沒有額外的參數:\t返回decimal.TryParse(theValue,out retNum);謝謝!!您可能需要相應地更改您的答案,以便我可以將其標記爲已解決。 – Patrick