我有两个数组payArray
,hoursArray
,其中数组是通过从csv
文件读入来初始化的。
目标是calculate base pay
,payArray
倍hoursArray
。问题是hoursArray包含超过40小时。超过40小时的任何小时都会超过时间,即每小时1.5小时。所以我必须使用这两个数组来计算基本工资,over time pay
和gross pay
。
目前我有以下功能:
注意* numOfEmployees = 20和OT_RATE = 1.5
static double BasePay()
{
int i;
double bpay;
for (i = 1; i <= numOfEmployees; i++)
{
if (hoursArray[i] > 40)
hoursArray[i] * OT_RATE;
else if
bpay = payArray[i] * hoursArray[i];
}
return bpay;
}
我尝试了一些不同的方法来使用这个函数计算它们,但是能够这样做。
更新**
这是文件输出和功能:
for (i = 1; i <= numOfEmployees; i++)
fileOut.WriteLine("{0,4:D4} {1,-25} {2,3} {3,7:f} {4,6:f} {5,6:f}",
idArray[i], nameArray[i], deptArray[i], payArray[i], hoursArray[i], BasePay(id));
static double BasePay(int i)
{
int id = 0;
double bpay = 0.0, OT_RATE = 1.5;
if (id < hoursArray.Length) //guard on array index
{
if (hoursArray[i] > 40)
bpay += (hoursArray[i] - 40) * payArray[i] * OT_RATE + (40 * payArray[i]);
else
bpay += payArray[i] * hoursArray[i];
}
return bpay;
}
添加id = 0;
的引用后,公式似乎有效,但我得到以下输出:
Toni的基本工资(名称变更)应该是880.00,这将是22.00时间40,然后从技术上讲,随着时间的推移将是132.00,因为他们支付率的1.5倍是OT计算的4倍。
答案 0 :(得分:3)
基本工资将按此计算:
for (...)
{
bpay[i] = payArray[i] * (hoursArray[i] > 40 ? 40 : hoursArray[i]);
}
这是您的函数应该返回的内容,因为它被命名为&#34; BasePay&#34;。你不应该担心这个特殊功能的加班时间。
如果要将函数重命名为Pay()
,则可以执行以下操作:
for (...)
{
pay[i] = payArray[i] * (hoursArray[i] > 40 ? 40 : hoursArray[i]);
if (hoursArray[i] > 40)
pay[i] += payArray[i] * OT_RATE * (hoursArray[i] - 40);
}
答案 1 :(得分:1)
我不确定您是否打算 上一次员工基本工资或总支付。另外(我假设)你需要在40小时后才需要 OT_RATE 。
我更新了代码,假设您需要所有员工的支付,OT仅适用于超出工作(40小时)。
static double BasePay()
{
int i;
double bpay =0.0, OT_RATE = 1.5;
for (i = 1; i <= numOfEmployees; i++)
{
if (hoursArray[i] > 40)
bpay += (hoursArray[i]-40) * payArray[i] * OT_RATE + (40* payArray[i]);
else
bpay += payArray[i] * hoursArray[i];
} return bpay;
}
更新:
或者你也可以通过传递id来删除这里的循环以获得个人雇员的basepay。
static double BasePay(int i)
{
double bpay =0.0, OT_RATE = 1.5;
if(id < hoursArray.Length) //guard on array index
{
if (hoursArray[i] > 40)
bpay += (hoursArray[i]-40) * payArray[i] * OT_RATE + (40* payArray[i]);
else
bpay += payArray[i] * hoursArray[i];
}
return bpay;
}