C#不能显示整个结果

时间:2018-08-08 07:29:18

标签: c#

早上好

我有以下问题,我是一名学生,需要解决Visual Studio 2012中的一个练习。

我需要编写一个算法,请求50、100、200和500、1000和1000、2000、5000、10000、20000和50000的硬币数量并显示当天收集的总金额。

我必须在Windows窗体中执行此操作。 我尝试这样做,但是结果只显示结果的前3位。我以为这是错误的,但是后来我在计算器中做到了,如果仅考虑前3位数字,结果实际上是正确的。但是,我希望它显示操作的所有数字。

下面是我尝试过的事情。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtBil50_TextChanged(object sender, EventArgs e)
        {

        }

        private void txbCalcu_Click(object sender, EventArgs e)
        {
            double mon1 = double.Parse(txtMo50.Text);
            double mon2 = double.Parse(txtMo100.Text);
            double mon3 = double.Parse(txtMo200.Text);
            double mon4 = double.Parse(txtMo500.Text);
            double mon5 = double.Parse(txtMo1000.Text);
            double bil1 = double.Parse(txtBil1000.Text);
            double bil2 = double.Parse(txtBil2000.Text);
            double bil3 = double.Parse(txtBil5000.Text);
            double bil4 = double.Parse(txtBil1000.Text);
            double bil5 = double.Parse(txtBil20.Text);
            double bil6 = double.Parse(txtBil50.Text);

            double multi1 = mon1 * 50;
            double multi2 = mon2 * 100;
            double multi3 = mon3 * 200;
            double multi4 = mon4 * 500;
            double multi5 = mon5 * 1000;
            double bill1 = bil1 * 1000;
            double bill2 = bil2 * 2000;
            double bill3 = bil3 * 5000;
            double bill4 = bil4 * 10000;
            double bill5 = bil5 * 20000;
            double bill6 = bil6 * 50000;

            double suma= mon1 + mon2 + mon3 + mon4 + mon5 + bil1 + bil2 + bil3 + bil4 + bil5 + bil6;
            txtCal.Text = ""+suma ;

        }
    }
}

希望对您有所帮助

1 个答案:

答案 0 :(得分:0)

我怀疑您的问题来自于您的求和:

mon1 + mon2 + mon3 + mon4 + mon5 + bil1 + bil2 + bil3 + bil4 + bil5 + bil6

您实际要汇总的位置:

multi1 + multi2 + multi3 + multi4 + multi5 + bill1 + bill2 + bill3 + bill4 + bill5 + bill6

此外,正如nabuchodonossor所指出的,此行:

double bil4 = double.Parse(txtBil1000.Text);

更可能是:

double bil4 = double.Parse(txtBil10000.Text);
// -------------------------------^^^^

同样,bil5bil6分别用于输入txtBil20txtBil50,而人们期望txtBil20000txtBil50000


@ V0ldek指出,例如,存储这些值的更简洁的方法可能是:

var coinCount = new Dictionary<int, double>();
coinCount[50] = double.Parse(txtMo50.Text);
coinCount[100] = double.Parse(txtMo100.Text);
// ...

var billCount = new Dictionary<int, double>();
billCount[1000] = double.Parse(txtBil1000.Text);
// ...

var coinAmount = new Dictionary<int, double>();
coinAmount[50] = 50*coinCount[50];
// ...

var billAmount = new Dictionary<int, double>();
billAmount[1000] = 1000*billCount[1000];
// ...

当然,在这里您甚至可以存储不同的硬币和纸币值,因此您不必使用上面的魔术数字。

Here是说明上面内容的可运行代码。