我遇到了计算准确值的正确方法。这是问题所在。我有一个可以每周,每天和每小时定价的资源。
让我们假设每小时花费5英镑,每天花费20英镑,每周花费150英镑。
我想要做的是计算预订资源的费用,这样如果有人预订了1周,3天和2小时,他们应该只支付150 + 60 + 10 = 220
。
我正在使用JodaTime作为参考。以下是我到目前为止的情况:
hour_price = resource.getPricing().getHourly() * ((mDuration.toStandardSeconds().getSeconds() % 86400) % 24);
day_price = resource.getPricing().getDaily() * (mDuration.toStandardDays().getDays() % 7);
week_price = resource.getPricing().getWeekly() * (Math.floor(mDuration.toStandardDays().getDays() / 7));
double cost = week_price + day_price + hour_price;
我认为周逻辑和日逻辑是合理的。现在我只需要剩余小时逻辑。有什么指针吗?
答案 0 :(得分:1)
你应该从最大的时间间隔开始,从持续时间中取出它,然后用更小的时间,用剩余的时间间隔并以最小的间隔使用它:
week_price = resource.getPricing().getWeekly() * (mDuration.toStandardDays().getDays() / 7);
day_price = resource.getPricing().getDaily() * (mDuration.toStandardDays().getDays() % 7);
hour_price = resource.getPricing().getHourly() * ((mDuration.toStandardSeconds().getSeconds() % 86400) / 3600);
因此,在最后一步中,您需要花费几周的时间,在数周和数天内减去剩余的小时数(在一天内的秒数 - 在24小时内除以之后的剩余时间),然后将其除以每小时的秒数得到多少小时。如果你还有几秒钟,那么再添加一小时到hour_price,因为它开始了新的一小时。