500.45
我想从两个字符串中获取一个十进制值,例如。如何实现这个操作?
decimal value; //like 500.45
string txt1, txt2;
txt1 = "500";
txt2 = "45";
value = Convert.ToDecimal(txt1) + Convert.ToDecimal(txt2); //500.45
500.45
我想从两个字符串中获取一个十进制值,例如。如何实现这个操作?
decimal value; //like 500.45
string txt1, txt2;
txt1 = "500";
txt2 = "45";
value = Convert.ToDecimal(txt1) + Convert.ToDecimal(txt2); //500.45
string txt1, txt2;
txt1 = "500";
txt2 = "45";
decimal value = Convert.ToDecimal(string.Format("{0}.{1}", txt1, txt2));
value = Convert.ToDecimal(txt1 + "." + txt2);
尝试这个:
decimal val;
string txt1 = "500";
string txt2 = "45";
string textValue = txt1 + "." + txt2;
decimal.TryParse(textValue,
NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture,
out val);
显然,每个人都能想出的唯一答案是微不足道的(在中间用一个点连接并解析它)。但是,请做正确的事!(我给了足够的提示!)例如,在我的系统上,小数点分隔符是逗号,因此您的所有代码都将不起作用。您必须在中立文化中进行,例如:
string integerPart = "500";
string fractionalPart = "45";
decimal result = Decimal.Parse(
// Combine the strings to a new string "500.45"
String.Format("{0}.{1}", integerPart, fractionalPart),
// We allow a leading sign "-500.45", and a decimal point
NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint,
// We use a neutral culture in which the decimal separator is a dot (.)
CultureInfo.InvariantCulture);
如果字符串是用户输入,则应TryParse
改用并处理由于用户输入错误而导致失败的情况:
decimal result;
if (!Decimal.Parse(
String.Format("{0}.{1}", integerPart, fractionalPart),
NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture,
out result))
{
// Handle invalid user input.
}
您也可以使用该string.Join()
方法来完成此操作
string txt1, txt2;
txt1 = "500";
txt2 = "45";
var valueJoin = Convert.ToDecimal(string.Join(".", txt1,txt2));
Output 500.45