2

たとえば、2 つの文字列から 10 進数値を取得したい500.45。この操作を達成する方法は?

decimal value; //like 500.45

string txt1, txt2;
txt1 = "500";
txt2 = "45";

value = Convert.ToDecimal(txt1) + Convert.ToDecimal(txt2); //500.45
4

5 に答える 5

0
string txt1, txt2;
txt1 = "500";
txt2 = "45";

decimal value = Convert.ToDecimal(string.Format("{0}.{1}", txt1, txt2));
于 2013-03-21T13:17:23.357 に答える
0

これを試して:

decimal val;
string txt1 = "500";
string txt2 = "45";
string textValue = txt1 + "." + txt2;
decimal.TryParse(textValue, 
                 NumberStyles.AllowDecimalPoint, 
                 CultureInfo.InvariantCulture, 
                 out val);
于 2013-03-21T13:18:20.167 に答える
0

どうやら誰もが思いつくことができる唯一の答えは、些細なもの (間にドットを連結して解析すること) です。しかし、それを正しくしてください!(私は十分なヒントを与えました!) たとえば、私のシステムでは、小数点記号はコンマであるため、すべてのコードが機能しません。中立的な文化でそれを行う必要があります。たとえば、次のようになります。

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.
}
于 2013-03-21T13:29:12.207 に答える
0
value = Convert.ToDecimal(txt1 + "." + txt2);
于 2013-03-21T13:20:39.027 に答える
-2

string.Join()メソッドを使用してこれを達成することもできます

string txt1, txt2;
txt1 = "500";
txt2 = "45";
var valueJoin = Convert.ToDecimal(string.Join(".", txt1,txt2));

Output 500.45

于 2013-03-21T13:25:05.777 に答える