强制小数分隔符时解析 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
否则它将不起作用,因为该值绝对不是浮点数的整数。
我来自意大利,所以这里的小数点分隔符是“,”,密码按字符“分组”。 简而言之,当用户不更改全局格式而仅通过高级设置更改分隔符和组字符时,我必须处理数字。
请看下图:
你可以看到格式仍然是意大利语,但通过以下高级设置:
因此您可以看到,尽管保留了全局意大利语设置,但我还是强制小数点分隔符为“,”,密码组字符为“.
话虽如此,我必须确定一个字符串是否为数字。为此,我使用以下 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
否则它将不起作用,因为该值绝对不是浮点数的整数。