2011-12-28 9 views
2

私は電卓をC#で作っています。 は、私は数字を分割するとき、私は0未満 は、しかし、私は電卓は、私はすでに得た答えと新しい計算を開始する答えを得る、ので、フロートを使用する必要がありますので、私は書きました:C#電卓、入力を答えにする方法は?

a = Convert.ToInt64(answer); 

しかし、それは助けにはならない、それは答えをint64にも変換する。 私はポインタでやり遂げることができると思っていますが、どういうふうには分かりません。

回答を変換せずに、回答の値を 'a'(入力)にコピーするにはどうすればよいですか?誰もが必要な場合

Int64 a; //1st Input 
    Int64 b; //2nd Input 
    float answer; 
    char d; 
    bool pressed; 
    private void button11_Click(object sender, EventArgs e) 
    { 
     if (d == '+') answer = a + b; 
     if (d == '-') answer = a - b; 
     if (d == '*') answer = a * b; 
     if (d == '/') answer = a/b; 
     textBox1.Text = a.ToString() + d + b.ToString() + '=' +answer.ToString(); 
     a = Convert.ToInt64(answer); 
     b = 0; 
    } 

申し訳ありませんが、全体のソースコードがないために、あまりにもそれらを追加するために私にちょうど検討する:)

+1

この宿題ですか? – crashmstr

+0

ええと、投稿したコードにポインタが表示されないので、タグを削除しています。 –

+8

質問をしたり答えを読んだりすることで、C#を習得することはできません。自分で本を見つけてC#を学びましょう。そして、あなたが本当に問題に遭遇したら、ここに戻って助けてください。 –

答えて

2

カップル:ユーザーが全体の数字でのみ動作しますそうであるよう

  1. あなたの入力はおそらく、最初の場所でのInt64をすべきではない、彼らは使用を開始し、特に後分割。
  2. あなたの回答とあなたの入力は同じタイプでなければなりません。これはあなたのキャスティングの問題を取り除きます。
  3. 浮動小数点は不正確で、最適なオプションではない可能性があります。 Floatよりも精度が必要な場合は、Decimalを試してみてください。
+1

私は電卓に全回答ではなく、どのようにDecimalが私を助けることができるようにしたいですか? – vato

+0

すべてのサイズの整数は整数(整数)のみです。小数は、非整数を可能にする厳密な型です。すべてを10進数に移動すると、Convert.ToInt64()呼び出しも削除できます。 – mynameiscoffey

0

つのオプションを教えてください:

  • のみ整数の除算を行います。
  • 入力と出力の両方に浮動小数点型を使用します。役立つかもしれない観測の
1

まず第一に人は、彼が電卓を作る方法を求めていない(あなたはそれのために、Googleの浮動小数点演算の限界に気付いていない場合)、彼は単に特定の問題に助けを求めています、私はそれが何をだと思いますSOは約あるはずです。

正しい軌道に乗っていますが、調整が必要です。

操作が

あなたが最も可能性が高いInt64必要はありません、あなたはおそらくfloatまたはdoubleを探しています。そして、答えはなりabが1つ(または両方)場合は答えは0になり、整数だったら答えは、0.5だろう。ここ

float a = 1.0f; 
float b = 2.0f; 
float answer = a/b; 

floatまたはdoubleです:だから、ここで簡単な例であります10進数。

if文

我々はそれでありながら、あなたの文は、それをすることによって改善することができる場合のif-else:

if (d == '+') answer = a + b; 
else if (d == '-') answer = a - b; 
else if (d == '*') answer = a * b; 
else if (d == '/') answer = a/b; 

なぜ?dは、となるため、の文字列(+,-*/)です。 if-elseを使用すると、ケースが真になると、残りのifはスキップされます。あなたのコードでは、dが+であっても、他の3つのif文が引き続きチェックされます。

+1

ありがとうございますが、aとbのint64を残す可能性がありますか?floatで答えを得て、最後に答えをaと同じにして計算を続行しますか?なぜなら、私は10桁以上のユーザータイプを入力させたいからです。 – vato

+0

その場合、floatではなくdoubleを使用できます。 Doubleは64ビットの数値で、floatは32ビットの数値です。 – prestomanifesto

関連する問題