Java 实现单元转换
我正在处理一个函数,在这个函数中,我计算仪表单位的数量。电表计算规则如下:Java 实现单元转换,java,logic,Java,Logic,我正在处理一个函数,在这个函数中,我计算仪表单位的数量。电表计算规则如下: 1.6公里amt-12的最低票价/- 后续1公里amt-7/- 午夜旅程加价25% 我写的函数是: public static void CalculateAutoFare(int kmIndex) { double fare = 12.00; double night = 15.00; double subseIncre = 1.50; double nightIncre = 0.2
- 1.6公里amt-12的最低票价/-
- 后续1公里amt-7/-
- 午夜旅程加价25%
public static void CalculateAutoFare(int kmIndex) {
double fare = 12.00;
double night = 15.00;
double subseIncre = 1.50;
double nightIncre = 0.25;
int j=0;
for (int i=1; i <= kmIndex; i++) {
if (i == 3 || j == 4) {
fare += 1.00f;
j =0;
}
else {
fare += subseIncre;
j++;
}
fare = Math.round(fare*2f)/2f;
double extra = ((double) fare * nightIncre);
night = fare + extra;
night = Math.round(night*2f)/2f;
System.out.println("I = " + i + " Fare = " + fare + " Night = " + night + " 25%Extra = " + extra);
}
System.out.println("Day = " + fare + " Night = " + night);
}
publicstaticvoidcalculateAutofare(int-kmIndex){
双倍票价=12.00;
双晚=15.00;
双次增量=1.50;
双倍夜间增量=0.25;
int j=0;
对于(inti=1;i代码中的小调整就可以了。你想要的是.75轮,即.5,而不是乘以2乘以它的更小的浮点数
{
double fare = 12.00;
double night = 15.00;
double subseIncre = 1.50;
double nightIncre = 0.25;
int j=0;
for (int i=1; i <= 22; i++) {
if (i == 3 || j == 4) {
fare += 1.00f;
j =0;
}
else {
fare += subseIncre;
j++;
}
double extra = ((double) fare * nightIncre);
night = fare + extra;
;
System.out.println("I = " + i + " Fare = " + fare + " Night = " + night + " 25%Extra = " + extra);
}
System.out.println("actual Day = " + fare + " Night = " + night);
fare = Math.round(fare*1.99f)/2f;
night = Math.round(night*1.99f)/2f;
System.out.println("rounded Day = " + fare + " Night = " + night);
}
{
双倍票价=12.00;
双晚=15.00;
双次增量=1.50;
双倍夜间增量=0.25;
int j=0;
对于(int i=1;i我已经分析了工作表,但我没有找到一个公式来给出那里显示的结果。似乎有些值有一些舍入差异。我意识到只有25分或75分的值是不同的。例如,你计算了18,5,它应该是19(结果是18,75,四舍五入到18,5,但应该四舍五入到19)。
因此,如果您没有用于创建表的原始公式,我认为确保结果与工作表匹配的唯一方法是对其进行硬编码。这不是一个优雅的解决方案,但它保证了正确的结果。您能解释一下“应该”列吗.在第一个例子中,为什么应该是19而不是18.5?你能展示一下实现这个结果的步骤吗?应该的结果如下:“应该”的结果如下:根据上面的代码,我得到了许多正确的数字。他们不需要更改fare=Math.round,因为这是正确的。我添加了一个if(i>=11&&i是的,我没有用其他输入进行验证…在这种情况下,您可能需要if。。。