如何将浮点数分成两个变量? (C ++)

时间:2018-11-13 08:12:35

标签: visual-c++

我不知道如何计算总小时数并将其分为正常时间和加班时间。

我想实现的目标是:添加一个模块,将工作时间分为正常时间和加班时间。此模块必须具有一个“输入”参数和两个“输出”参数。

我能想到的是:

if (total_hours >= 0 || total_hours <= 40) {
    reg_hours = total_hours;
}

if (total_hours >= 41 || total_hours <= 60) {
    ovt_hours = (total_hours - 40);
}

total_hours是我的输入。 reg_hours和ovt_hours是我的输出。如果我在total_hours中输入35.6,它将进行编译并给我-4.40。输入40或更高时,它可以很好地工作,但是如果输入的值小于该值,它将始终产生负的ovt_hours值。我真的很困惑如何阻止它给我一个负数。我一直在到处寻找解决方案,但是找不到任何可以帮助我了解自己做错事情的东西。如果有人能够以最简单的方式对此进行解释,那将对我有很大帮助。

2 个答案:

答案 0 :(得分:1)

您最多可以正常工作40个小时...

int reg_hours = max(total_hours, 40);

如果您工作了40多个小时,那么多余的时间就是加班时间...

int ovt_hours = 0;
if (total_hours > 40) {
    ovt_hours = total_hours - 40;
}

答案 1 :(得分:0)

您应该了解一件事: 将“ if”语句与另一个“ if”语句(不带“ else if”或“ else”)一起使用肯定会使您的编译器同时进入两个“ if”语句(假设条件为真)。

此外,您应该注意到代码中存在逻辑错误:

  1. “如果(总小时数> = 0 ||总小时数<= 40)”
  2. “如果(总小时数> = 41 ||总小时数<= 60)”

当您输入“ total_hours = 35.6”时,编译器将同时进入两个if语句。为什么?因为35.6是> = 0和<= 40(if语句的第一个),而35.6是<= 60(if语句的第二个)。

因此,您必须在第二个if语句中使用“ else if”。

另一件事是,您可能需要考虑使用“ &&”而不是“ ||”因为您要检查2个值之间的范围。使用“ ||”表示您只检查范围低于/高于值的范围。