2011-10-22 12 views
0

それはそれよりも少し複雑だが、これは私のコードです:変換通貨に小数点およびバック

private void button1_Click(object sender, EventArgs e) 
{ 
    Decimal num1 = Convert.ToDecimal(textBox1.Text); 
    Decimal num2 = Convert.ToDecimal(textBox2.Text); 

    Decimal total = num1 + num2; 

    textBox3.Text = total.ToString("C"); 

    Decimal total2 = Convert.ToDecimal(total); 

    total2 = total * 4.2; 

    textBox4.Text = Convert.ToString(total2); 

は、基本的には、このです:私は4つのテキストボックスを持っている、と私はAに置くことができるようにしたいですボックス1とボックス2の番号。ボックス3はボックス1 & 2を掛け、それを通貨に変換します。ボックス4はボックス3sの値を取って小数点に戻し、数を掛けます。私はtotal2に小数点がない限り動作させることができます。それが1つあるときそれは失敗する。

プログラムは、基本的には、次のに入れてレジプログラムです:

QTY (box 1) 
Amonunt (box 2) 
Subtotal (box 3) 
Total (box 4) 

任意のアイデアが参考になります。

おかげで、

カレブ

+2

実際には、コード内の変数に意味のある名前を付ける必要があります。 – Jong

+0

これは「生産」ではありません。これは、投稿するために作成したものです。 – user1008803

+0

私はより多くのラベルが付けられていますが、このプロジェクトはちょっと基本的なものです。何らかの理由でそれを理解できません。 – user1008803

答えて

0

根本的な問題は、あなたがこの行の小数とダブルを混合していることである。

total2 = total * 4.2; 

totalは10進数ですと4.2は、二重リテラルです。小数点のリテラルを書くには、接尾辞mを使用します。

total2 = total * 4.2m; 
1

私が正しく問題を理解していれば、あなたが通貨の値を保持し、小数点変数に対して操作を実行します。これは、特定の解像度(セントの場合は小数点以下2桁など)を維持することを意味します。 より、10進数は一般的な目的のため、プログラムで必要な解像度を維持する必要があります。

例:

static Decimal RoundToCents(Decimal value) 
{ 
    return Math.Round(value, 2, MidpointRounding.AwayFromZero); 
} 


Decimal num1 = RoundToCents(Convert.ToDecimal(textBox1.Text)); 
Decimal num2 = RoundToCents(Convert.ToDecimal(textBox2.Text)); 

Decimal total = num1 + num2; // no rounding is needed for additions and subtractions 
Decimal total2 = RoundToCents(total * 4.2m); 
+0

私はこれが好きです....私はそれを行ってみましょう、私はこれが私が探していたと思います – user1008803

関連する問題