首页 > 解决方案 > C++:IF/ELSE 与正值和负值的比较

问题描述

我有一个正在构建的 CLR 项目。该程序运行如下:

Step1:用户输入调查标题,然后点击计算。

Step2:用户输入观察到的标题并将它们输入到文本字段中

Step3:用户点击按钮计算计算出的航向与观察航向的差值

Step4:标题的差异被放入新的文本字段中

好的,所以基本上我们有一个经过校准的指南针,我们观察第二个指南针相对于第一个指南针的航向。这两个标题之间的区别是我们的最终输出。

我正在尝试编写一个 If/Else 语句,该语句将评估差异并根据它是否通过 0.5 容差的标准以特定颜色写入数字。

目前我正在使用:

varOut1 = (DiffCalc1 - ObsHdgDbl);
        if (varOut1 < .5) {
            this->Diff1->Font = (gcnew System::Drawing::Font(L"Arial", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
                static_cast<System::Byte>(0)));
            this->Diff1->ForeColor = System::Drawing::Color::SpringGreen;
        }
        else {
            this->Diff1->Font = (gcnew System::Drawing::Font(L"Arial", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
                static_cast<System::Byte>(0)));
            this->Diff1->ForeColor = System::Drawing::Color::Red;
        }
        Diff1Final = (varOut1.ToString("n2"));
        Diff1->Text = Diff1Final;

到目前为止,这在一定程度上有效……但问题是有时差值是负数。

示例:CalculatedHdg = 40.45, ObservedHdg=40.52, Diff1=.07 在此示例中,代码有效,因为它位于所描述的语句中,因此输出为绿色。

如果您有 ObservedHdg=41.52,则输出以红色打印...但是,如果您有 ObservedHdg=31.52,则即使整体差异高于 0.5,输出仍为绿色。根据观察值,差异可以是正数或负数,因此我需要一个语句来评估 Diff1 是否在 0.5 的容差范围内,无论是正数还是负数。

我对数学评估的 If/Else 比较有点生疏。我尝试搜索高级 If/Else 比较,但大多数情况下我遇到了解释如何使用 && vs || 的示例 vs <= 等

标签: if-statementcomparison

解决方案


好吧,我只是简化了过程并使用了差异的绝对值,因此我只需要一个比较。

if (Math::Abs(varOut1) < .5) {

推荐阅读