我需要验证双值。当我TryParse .00 or ,00返回false时,但是我允许这个值必须为真。
此代码在这种情况下不能正常工作。
型号= ,00或.002或,789或.12 .
double number;
double.TryParse(model, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out number)发布于 2014-02-14 14:50:26
当您使用NumberFormatInfo.InvariantInfo时,您将强制解析器将.视为十进制分隔符,将,视为数千分隔符。所以
double.TryParse(".002", out number)会返回真实,但是
double.TryParse(",789", out number)不会的。
如果您想支持多种格式,则必须为每种格式调用TryParse。没有一种方法可以尝试解析一个在格式中有效的数字,因为它们可以返回不同的值。"123,456"可以通过两种不同的方式来解释,这取决于您使用的是什么区域性。
发布于 2014-02-14 14:59:04
我不认为你真的能安全地做到这一点。如果您设法让系统处理将"."和","定义为十进制分隔符和分组分隔符的两种方法,则会遇到模糊问题。
例如,如果传入"1.001"怎么办?那"1,001"呢?你怎么知道其中一个真正的意思是“1,001”还是“千分之一”?
https://stackoverflow.com/questions/21782318
复制相似问题