如何找到加班费?

时间:2014-11-17 08:09:02

标签: java

如果问题(加班费率(超过8小时的工作时间)是小时费率的一半)!

费率为4.5。

int hoursWorked;
double rateOfPay=4.5;
double overtime=0;

if (hoursWorked>8)
      overtime = (hoursWorked-8)*(rateOfPay*1.5); // Calculate OVERTIME HOURS

3 个答案:

答案 0 :(得分:1)

首先计算一些“有效时间”或类似情况,将加班时间乘以增加的工资乘数 - 这很好。

double overtime = 0;
if (hours > 8)
    overtime = (hours - 8) * 1.5;

totalPay = (overtime == 0? hours * rate : (overtime + 8) * rate);

加班时间增加8小时正常工资!= 0,加班时间。

在超时等于0的情况下,它计算正常时间(因为小时<8,这等于(小时*费率))

否则,您的<小时&#39;工作时间为8 +(超过8小时1.5 *小时),括号中的术语标注为“超时”和“超时”。这里。

另一种方法是继续定义加班,并考虑@committedandroider提出的模型,说

totalPay = overtime + (rate * std::min(8, hours));

在这种情况下,如果你工作9小时,你不会计算不到8小时。

答案 1 :(得分:0)

你有正确的想法,那就是加班费率

在你拥有的之后, 我喜欢

if(hoursWorked <= 8) {
      totalPay = hoursWorked * rateOfPay;
}  else {
       totalPay = (8 * rateOfPay) + ((hoursWorked - 8) * (rateOfPay*1.5);
}

基本上,如果工人最多工作8小时,那么很容易计算总工资;只需乘以rateOfPay的工作小时数即可。 但是,如果工人加班,你也必须考虑奖金。首先,你必须给工人支付前八个8小时(8 * rateOfPay)的工资,然后将加班时间(工作时间 - 8)乘以加班费率rateOfPay * 1.5。

为了将来的目的,我建议您制作8和1.5常量,以便阅读代码的人能够理解它们是什么,比如说

private static final NORMAL_WORK_HOURS = 8;
private static final OVERTIME_BONUS_RATE = 1.5

答案 2 :(得分:0)

 int hoursWorked = 80;
 int overTimeHours = 5;
 double rateOfPay = 18.0;
 double overTime = rateOfPay * 1.5;

 // will print rateOfPay multiplied by 1.5
 System.out.println(overTime);

 if( hoursWorked <= 80);
    System.out.println(hoursWorked * rateOfPay);
 if(hoursWorked + overTimeHours > 80);
 //Multiplies hoursWorked by rateofPay = 1440.00 - then adds overTimeHours multiplied by overTime to total pay. 
    System.out.println(hoursWorked * rateOfPay + (overTimeHours * overTime));