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。
谢谢
你的问题是这两行代码:
double LengthFinal = (Lengthvalue - 2);
double WidthFinal = (WidthValue - 2);
从宽度和长度中减去2。6 * 6变成4 * 4,结果是16。
如果您设置了断点并调试了您的代码(或者甚至只是查看了一下您的代码),您会立即看到这个
我不认为你有什么问题。你的状态:
我正在写一个程序来计算一个一米边长的花园所需的草皮数量
宽度和高度的值都是6。所以你有一个6 * 6的花园,有一个1米的边界(假设边界包围了草皮的所有方面)。这就剩下了一个4*4的区域需要修整。
剩下16平方米的草皮面积,这就是你得到的结果。所以最终的价值应该是160英镑。