我正在编写从数据库中提取一些数据的代码。问题是我想将负数字符串“ -2.8”转换为双精度数。我想很容易。我首先尝试了:
var climateString = "−2.8";
var number = double.Parse(climateString);
结果如下:
An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll
所以我再三考虑,在谷歌上搜索,得到了新的答案:
var climateString = "−2.8";
var styles = NumberStyles.AllowParentheses | NumberStyles.AllowTrailingSign |NumberStyles.Float | NumberStyles.AllowDecimalPoint;
var rit = double.Parse(climateString, styles);
史诗再次失败:
An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll
我再三想,我不能如此愚蠢以至于不知道如何做这样一个简单的任务。我尝试了这个:
var climateString = "−2.8";
var doue = Convert.ToDouble(climateString, CultureInfo.InvariantCulture);
是的,完全相同的例外。我开始寻找一个数字,然后我意识到负号。仔细看这个数字“ -2.8”,这不是负数。这是一个负数“ -2.8”。再看那些迹象,“ -----------”不一样。解析具有不同符号字符的字符串会引发异常:S。因此,任何人都有一个主意,如何在C#中将其优雅地解析为双精度数字?谢谢你
正确的方法:
var climateString = "−2.8";
var fmt = new NumberFormatInfo();
fmt.NegativeSign = "−";
var number = double.Parse(climateString, fmt);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句