c#虚幻数学问题

本文关键字:问题 | 更新日期: 2023-09-27 18:13:11

我正在编写一个程序来计算一个一米边长的花园所需的草皮数量,然后计算草皮每平方米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米的平方)。这发生在不同的输入上,但为了解释,我使用6m。

谢谢

c#虚幻数学问题

你的问题是这两行代码:

double LengthFinal = (Lengthvalue - 2);
double WidthFinal = (WidthValue - 2);

从宽度和长度中减去2。6 * 6变成4 * 4,结果是16。

如果您设置了断点并调试了您的代码(或者甚至只是查看了一下您的代码),您会立即看到这个

我不认为你有什么问题。你的状态:

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

宽度和高度的值都是6。所以你有一个6 * 6的花园,有一个1米的边界(假设边界包围了草皮的所有方面)。这就剩下了一个4*4的区域需要修整。

剩下16平方米的草皮面积,这就是你得到的结果。所以最终的价值应该是160英镑。