1

私はC#を初めて使用し、現在電卓を作成しています。簡単な計算を行いたいのですが、正しく機能しません。

現在の行は次のとおりです。

Convert.ToString(Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text));

すべてのテキストボックスに1.1が含まれる出力例を次に示します。1.1+1.1+ 1.1 = 33

4

3 に答える 3

3

問題は、コンバージョンでカルチャを指定していないことです。ほとんどの場合、ドットを小数点ではなくグループ区切り文字として使用するドイツの文化(または他のヨーロッパの文化)があります。結果は、1.1として解釈され11ます。

2つの解決策があります:

  1. 現在の文化であなたの番号を入力してください:(1,1推奨)
  2. 不変カルチャを使用して数値を解析します。

    Convert.ToString(
        Convert.ToDouble(A.Text, CultureInfo.InvariantCulture) + 
        Convert.ToDouble(B.Text, CultureInfo.InvariantCulture) + 
        Convert.ToDouble(C.Text, CultureInfo.InvariantCulture),
        CultureInfo.InvariantCulture)
    

最初のアプローチは、ユーザーが常に独自の文化で番号を入力できるようにするため、推奨されます。ユーザーに特定の文化を強制することは、20年前には受け入れられていましたが、現在では受け入れられませんでした。

于 2013-02-19T10:59:22.213 に答える
-1

合計を計算してから、パーツを合計する必要があります。String.Formatは、文字列を連結するための優れた方法です。

double sum = Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text);
string resultStr = String.Format("{0}+{1}+{2}={3}", A.Text, B.Text, C.Text, sum);
于 2013-02-19T10:59:37.850 に答える
-2

最初に中間結果を二重変数に割り当ててから、それを文字列に配置する必要があります。

double d = Double.Parse(A.Text) + Double.Parse(B.Text) + Double.Parse(C.Text);

最終的にはあなたはただ電話することができます

string result = d.ToString();

これははるかに簡単です。

ここを参照してください。

于 2013-02-19T11:00:16.030 に答える