我想从两个字符串中获取十进制值,例如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
试试这个:
decimal val;
string txt1 = "500";
string txt2 = "45";
string textValue = txt1 + "." + txt2;
decimal.TryParse(textValue,
NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture,
out val);
@Virtlink谢谢你,我错过了cultureinfo – CloudyMarble 2013-03-21 14:00:55
value = Convert.ToDecimal(txt1 + "." + txt2);
这不会在我看来= = – 2013-03-21 13:21:52
'+ 1'我同意有很多方法去皮肤猫,仍然最后与猫呜咽... – MethodMan 2013-03-21 13:27:22
您可以使用string.Join()
方法来完成这也
string txt1, txt2;
txt1 = "500";
txt2 = "45";
var valueJoin = Convert.ToDecimal(string.Join(".", txt1,txt2));
Output 500.45
显然,每个人都可以提出的唯一答案是简单的答案(连接点之间的解析)。但是,请正确,请! (我给出了足够的提示!)在我的系统中,例如,小数点分隔符是逗号,所以你的代码将不起作用。你必须做一个中立的文化,例如:
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.
}
我明白你的观点,但我从来没有必要在进行这种类型的转换时指定文化。在荷兰这可能是一个问题。这不是。我通常不会将我的服务器配置为荷兰语。 – Liam 2013-03-21 13:31:44
@Liam您不必为荷兰语(或任何其他使用小数逗号的语言)配置服务器,但是您(作为一名优秀的程序员)必须意识到,转换将在某些非美国国家/地区失败系统,而且这很容易解决! – Virtlink 2013-03-21 13:33:33
我确实记得你的观点,但是描述一个非美国的系统,我怎么会碰到这些?我从来没有像这样将代码部署到服务器,这将是一个问题。 PS我在英国,所以我使用的是非美国系统。我说的是,仅仅因为你有**这样做,并没有使它*对所有人来说都是正确的* – Liam 2013-03-21 13:36:37
'string txt1 = 500'什么? – 2013-03-21 13:17:25
@SonerGönül,这是一个错字,寒意! – Liam 2013-03-21 13:19:05
如果OP拷贝的代码是逐字记录的,那么它们可能会被认为是错误的,那么他们通常会抱怨说,如果他们对编码不熟悉并且不熟悉Intellisense – MethodMan 2013-03-21 13:31:56