2011-10-22 48 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個文本框,我希望能夠把在編號在box1和box2中。方框三將乘以方框1 & 2並將其轉換爲貨幣。方框四將採用方框3的值並將其改回十進制並乘以一個數字。只要total2沒有小數,我就可以使用它。當它有一個它會失敗。

程序基本上是你在下面放一個收銀機程序:

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

任何想法會有所幫助。

感謝,

迦勒

+2

你真的應該給代碼中的變量賦予有意義的名字。 – Jong

+0

這不是「生產」之一。這是我爲了張貼而創建的。 – user1008803

+0

我有一個更貼標籤,但這個項目是有點基本的,只是因爲某種原因不能找出它 – user1008803

回答

0

最根本的問題是,你混合十進制和雙在此行中:

total2 = total * 4.2; 

total是小數和4.2是雙文字。要寫一個十進制文字,使用m後綴。

total2 = total * 4.2m; 
1

如果我理解正確的問題,你持有貨幣值的十進制變量進行計算。通常這意味着保持特定的分辨率(例如小數點後兩位數字)。由於十進制是您需要以編程方式維護所需分辨率的通用類型。

例如:

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