C ++:IF / ELSE比较带有正负值

时间:2019-02-05 14:53:15

标签: if-statement comparison

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

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

第2步:用户输入观察到的标题并将其输入文本字段

第3步:用户单击按钮以计算计算出的标题与观察到的标题之间的差异

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是否在.5的公差范围内(正数还是负数)。

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

1 个答案:

答案 0 :(得分:0)

好吧,我只是简化了过程,并使用了Difference的Abs值,所以我只需要一个比较。

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