C#Illusive Maths问题

时间:2015-09-17 09:37:10

标签: c# math

我正在编写一个程序来计算一米边界花园所需的草皮量,然后找到草坪每平方米花费10英镑的总成本。这是我到目前为止的代码:

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 _3._6
{
    public partial class frmTurfCalculator : Form
    {
        public frmTurfCalculator()
        {
            InitializeComponent();
        }

        public float LengthFinal { get; private set; }
        public double Lengthvalue { get; private set; }
        public float WidthFinal { get; private set; }
        public double WidthValue { get; private set; }

        private void btnCalculate_Click(object sender, EventArgs e)
        {
            Lengthvalue = Convert.ToDouble(txtLength.Text);
            double LengthFinal = (Lengthvalue - 2);

            WidthValue = Convert.ToDouble(txtWidth.Text);
            double WidthFinal = (WidthValue - 2);

            double GardenArea = (WidthFinal * LengthFinal);
            double TurfCost = (10 * GardenArea);
            lblOutput1.Text = ("Amount of Turf (with 1m boundry): " + GardenArea);
            lblOutput2.Text = ("Total cost of turf = " + TurfCost + "£");
        }
    }
}

出于某种原因,每当我运行(我使用的宽度为6米,长度为6米)时,它会产生一个非常奇怪的结果(16平方米)。这种情况发生在不同的输入,但为了解释,我使用6米。

由于

2 个答案:

答案 0 :(得分:2)

您的问题在于这两行代码:

double LengthFinal = (Lengthvalue - 2);

double WidthFinal = (WidthValue - 2);

你从宽度和长度中减去2。所以6 * 6变成4 * 4,给你16的结果。

如果您设置断点并通过代码调试(甚至只是查看代码),您会立即看到这一点。

答案 1 :(得分:2)

我不相信你有问题。你说:

  

我正在编写一个程序来计算一米边界花园所需的草皮量

您使用的宽度和高度值均为6.因此您有一个6 * 6的花园,边界为1米(假设边界环绕草皮的所有边)。这将留下一个需要草坪的4 * 4区域。

这使你留下了16平方米草坪的剩余区域,这是你得到的结果。所以最终价值应该是160英镑。