[英]Convert a negative string decimal value to double in c#
我想将字符串格式(如-14.3
的值转换为double。
我目前正在使用Convert.ToDouble()
将正值转换为双Convert.ToDouble()
,但是如果十进制负数将返回意外结果。 对于-14.3
它返回-143
。 所以在这方面需要一些帮助
private double getDouble(string Value)
{
double result = 0;
try
{
result = Convert.ToDouble(Value);
}
catch (Exception)
{
result = 0;
}
return result;
}
}
您需要使用NumberFormatInfo
来指定用于负号和小数点分隔符的字符。
var format = new NumberFormatInfo();
format.NegativeSign = "-";
format.NumberDecimalSeparator = ".";
var negativeNumber = Double.Parse("-14.3", format); // -14.3
var positiveNumber = Double.Parse("352.6", format); // 352.6
代替使用Convert.ToDouble函数,使用:
public static double mtdGetDouble(string Value)
{
if (Value == "" || Value == "-") return 0;
else return Convert.ToDouble(Value);
}
(这是我的风格...)
如果要将Double.TryParse
与NumberFormatInfo
一起使用,则需要指定NumberStyles.AllowDecimalPoint
和NumberStyles.AllowLeadingSign
。
var format = new NumberFormatInfo();
format.NegativeSign = "-";
format.NumberNegativePattern = 1;
format.NumberDecimalSeparator = ".";
double negativeNumber;
Double.TryParse("-14.3", NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, format, out negativeNumber); // -14.3
double positiveNumber;
Double.TryParse("352.6", NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, format, out positiveNumber); // 352.6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.