我发现针对这个主题有很多问题,但没有找到一个能完全解决我的案例的答案。
对于一个可能是未知文化背景下的实数也可能是非实数的字符串输入,如何尝试使用CultureInfo.InvariantCulture
将其转换为双精度浮点数?
能否针对小数点可能是"."或","的特殊情况,通过某种巧妙的算法比较解析后的值来解决这个问题呢?
private double? TryGetDouble(string input)
{
if (double.TryParse(input, NumberStyles.Number | NumberStyles.AllowExponent, CultureInfo.InvariantCulture, out double result))
{
// 这将会成功解析"1.25",但对于"1,25"会被转换为125。
return result;
}
return null;
}
我正在考虑是否可以先使用"."和","两种不同的文化样式分别解析该字符串,然后基于两种情况下解析得到的数值进行比较,从而得出结论。