强制小数分隔符时解析 long/double/float 数字

Parsing a long/double/float number when forcing decimal separator

我来自意大利,所以这里的小数点分隔符是“,”,密码按字符“分组”。 简而言之,当用户不更改全局格式而仅通过高级设置更改分隔符和组字符时,我必须处理数字。

请看下图:

你可以看到格式仍然是意大利语,但通过以下高级设置:

因此您可以看到,尽管保留了全局意大利语设置,但我还是强制小数点分隔符为“,”,密码组字符为“.

话虽如此,我必须确定一个字符串是否为数字。为此,我使用以下 s/r

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

事实是 long.TryParse 失败了。当 theValue 为“14.142135624”时,我得到一个 0 retNum 值。

试图弄乱其他 NumberStyles 和 NumberFormatInfo 值,但没有得到任何有用的东西

感谢您的帮助。

我们发现它与 NumberStyles 枚举无关,但与您尝试解析的数据类型有关。

您正在尝试将包含十进制数字的字符串解析为整数值类型。

您应该将调用从 long.TryParse 更改为 decimal.TryParse 否则它将不起作用,因为该值绝对不是浮点数的整数。