简体   繁体   中英

How do i get the total average?

private void txtFinal_Leave_1(object sender, EventArgs e)
    {
        int prelim;
        int midterm;
        int final;
        decimal average;
        string remarks;

        prelim = int.Parse(txtPrelim.Text);
        midterm = int.Parse(txtMidterm.Text);
        final = int.Parse(txtFinal.Text);

        average = (prelim + midterm + final) / 3;
        txtAverage.Text = average.ToString();

        if (average >= 75)
        {
            remarks = "passed";
        }
        else
        {
            remarks = "failed";
        }
        txtRemarks.Text = remarks;


       // this is the output 83 passed
       // I want to be like this 83.25 passed

    }
average = (prelim + midterm + final) / 3.0m;

This will fix your problem.

Int is an integer type; dividing two ints performs an integer division, ie the fractional part is truncated since it can't be stored in the result type (also int!). Decimal, by contrast, has got a fractional part. By invoking Decimal.Divide, your int arguments get implicitly converted to Decimals.

You can enforce non-integer division on int arguments by explicitly casting at least one of the arguments to a floating-point type, eg: 3.0m this is casting to decimal !

please upgrade your code as follow:

average = Convert.ToDecimal(prelim + midterm + final) / 3;
txtAverage.Text = string.Format("{0:0.00}", average);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM