私はC#を初めて使用し、現在電卓を作成しています。簡単な計算を行いたいのですが、正しく機能しません。
現在の行は次のとおりです。
Convert.ToString(Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text));
すべてのテキストボックスに1.1が含まれる出力例を次に示します。1.1+1.1+ 1.1 = 33
私はC#を初めて使用し、現在電卓を作成しています。簡単な計算を行いたいのですが、正しく機能しません。
現在の行は次のとおりです。
Convert.ToString(Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text));
すべてのテキストボックスに1.1が含まれる出力例を次に示します。1.1+1.1+ 1.1 = 33
問題は、コンバージョンでカルチャを指定していないことです。ほとんどの場合、ドットを小数点ではなくグループ区切り文字として使用するドイツの文化(または他のヨーロッパの文化)があります。結果は、1.1
として解釈され11
ます。
2つの解決策があります:
1,1
推奨)不変カルチャを使用して数値を解析します。
Convert.ToString(
Convert.ToDouble(A.Text, CultureInfo.InvariantCulture) +
Convert.ToDouble(B.Text, CultureInfo.InvariantCulture) +
Convert.ToDouble(C.Text, CultureInfo.InvariantCulture),
CultureInfo.InvariantCulture)
最初のアプローチは、ユーザーが常に独自の文化で番号を入力できるようにするため、推奨されます。ユーザーに特定の文化を強制することは、20年前には受け入れられていましたが、現在では受け入れられませんでした。
合計を計算してから、パーツを合計する必要があります。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);
最初に中間結果を二重変数に割り当ててから、それを文字列に配置する必要があります。
double d = Double.Parse(A.Text) + Double.Parse(B.Text) + Double.Parse(C.Text);
最終的にはあなたはただ電話することができます
string result = d.ToString();
これははるかに簡単です。
ここを参照してください。