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

时间:2016-10-06 07:50:23

标签: c# internationalization double string-parsing

我来自意大利,所以这里的小数点分隔符为',',并且密码由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失败了。当theValue为“14.142135624”时,我得到一个0 retNum值。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

您应该将呼叫从long.TryParse更改为decimal.TryParse,否则它将无效,因为该值绝对不是浮点数的整数。