2016-10-06 46 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