Math 计算小时现金,8小时前的现金为3美元,8小时后即为+;5.没有「;如果;

Math 计算小时现金,8小时前的现金为3美元,8小时后即为+;5.没有「;如果;,math,lua,Math,Lua,正如标题所说,我想要一个Lua上的数学函数来计算: 如果一个人工作8小时,他每小时的工资是3美元。 8小时后的任何额外一小时,他每小时可获得5美元的报酬 唯一可用的函数是math.abs和math.floor。不,如果使用。这对我来说是一个挑战,我失败了,我想你可以做到:)假设工作时间的变量是h。然后,您将获得以下信息: cash = h * 3 + (h <= 8 and 0 or (h - 8) * 2) cash=h*3+(h我用math.floor(hours/8.1)来表示这个

正如标题所说,我想要一个Lua上的数学函数来计算: 如果一个人工作8小时,他每小时的工资是3美元。 8小时后的任何额外一小时,他每小时可获得5美元的报酬


唯一可用的函数是math.abs和math.floor。不,如果使用。这对我来说是一个挑战,我失败了,我想你可以做到:)

假设工作时间的变量是
h
。然后,您将获得以下信息:

cash = h * 3 + (h <= 8 and 0 or (h - 8) * 2)
cash=h*3+(h我用math.floor(hours/8.1)来表示这个函数中的所有逻辑。我这样做的方法是将基于逻辑的数字乘以这个神奇的数字,这个数字要么计算为0(如果小时数小于8.1),要么计算为1(如果小时数大于等于8.1)。当然,如果您使用的时间大于16小时,则此操作将失败,此时它将开始将加班时间乘以2,但如果您每天工作16小时,则无论如何,您可能应该获得双倍加班;)

我使用了8.1而不是8,这样逻辑就不会在8小时工作日触发,只会在8小时以上的工作日触发。代码的其余部分相当简单(只需看看我过度使用的括号)


显示您的代码,它是如何失败的?它并不是失败的,我只是无法获得正确的数学路径。我所做的只是cash=(hours*3)+math.abs((hours-8)*2)),但nah只能工作8个多小时。
条件和真值或假值是if语句的表达式版本,这违反了问题的精神。
function calculatePay(hours)
  return (3*hours)+((2*math.floor(hours/8.1))*((hours-8)*math.floor(hours/8.1)))
end

print(calculatePay(6)) -- 6*3 is 18 for regular pay, no overtime
print(calculatePay(8)) -- 8*3 is 24 for regular pay, no overtime
print(calculatePay(10)) -- 10*3 is 30 for regular pay, plus 4 (2*2) overtime 
print(calculatePay(12)) -- 12*3 is 36 for regular pay, plus 8 (4*2) overtime