分支-04. 出租车计价(四舍五入)

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费 )。 

    输入格式:输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

    输出格式:在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

    输入样例1:2.6 2
    输出样例1:10
    输入样例2:5.1 4
    输出样例2:14
    输入样例3:12.5 9
    输出样例3:34

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        int step = 10;//起步价
        Scanner s = new Scanner(System.in);
            String input = s.nextLine();
            String[] inputs = input.split(" ");
            if(inputs.length == 2)
            {
                float roads = Float.parseFloat(inputs[0]);
                int time = Integer.parseInt(inputs[1]);
                int i = (int) roads/3;//判断是否超出3公里
                int j = (int) time/5;//判断是否超出5分钟
                if(j < 1)//5分钟内
                {
                    if(i<1)//3公里内(不含3公里)
                     System.out.print(step);
                    else
                     {
                        if(roads <= step)//大于等于3公里小于等于10公里
                         System.out.print(Math.round(step+(roads-3)*2));
                        else //大于10公里
                         System.out.print(Math.round(step+14+(roads-10)*3));
                     }
                }
                else//超过5分钟
                {
                    if(i<1)
                     System.out.print(step+2*j);
                    else
                     {
                        if(roads <= step)
                         System.out.print(Math.round(step+(roads-3)*2+2*j));
                        else
                         System.out.print(Math.round(step+14+(roads-10)*3+2*j));
                     }
                }
            }
    }
}

Java的四舍五入:

(转载自http://blog.csdn.net/shangboerds/article/details/7477336)

Java 的 Math 和 StrictMath 类提供了一些关于数学运算的静态方法. Math 类中的方法运行速度更快而 StrictMath 类中的方法更为精确.

Math 和 StrictMath 类提供了以下四个方法来进行四舍五入运算:

  ceil // 天花板
  round // 四舍五入, 返回整数
  rint // 四舍五入, 返回浮点数
  floor // 地板

来看下面代码的结果, 你就知道它们的意思了。

    public static void main(String[] args) {
        System.out.println("ceil testing");
        System.out.println("1.4 --ceil--> " + Math.ceil(1.4));
        System.out.println("1.5 --ceil--> " + Math.ceil(1.5));
        System.out.println("-1.4 --ceil--> " + Math.ceil(-1.4));
        System.out.println("-1.5 --ceil--> " + Math.ceil(-1.5));
        System.out.println();

        System.out.println("round testing");
        System.out.println("1.4 --round--> " + Math.round(1.4));
        System.out.println("1.5 --round--> " + Math.round(1.5));
        System.out.println("-1.4 --round--> " + Math.round(-1.4));
        System.out.println("-1.5 --round--> " + Math.round(-1.5));
        System.out.println();

        System.out.println("rint testing");
        System.out.println("1.4 --rint--> " + Math.rint(1.4));
        System.out.println("1.5 --rint--> " + Math.rint(1.5));
        System.out.println("-1.4 --rint--> " + Math.rint(-1.4));
        System.out.println("-1.5 --rint--> " + Math.rint(-1.5));
        System.out.println();

        System.out.println("floor testing");
        System.out.println("1.4 --floor--> " + Math.floor(1.4));
        System.out.println("1.5 --floor--> " + Math.floor(1.5));
        System.out.println("-1.4 --floor--> " + Math.floor(-1.4));
        System.out.println("-1.5 --floor--> " + Math.floor(-1.5));
    }

结果:

ceil testing
1.4 --ceil--> 2.0
1.5 --ceil--> 2.0
-1.4 --ceil--> -1.0
-1.5 --ceil--> -1.0

round testing
1.4 --round--> 1
1.5 --round--> 2
-1.4 --round--> -1
-1.5 --round--> -1

rint testing
1.4 --rint--> 1.0
1.5 --rint--> 2.0
-1.4 --rint--> -1.0
-1.5 --rint--> -2.0

floor testing
1.4 --floor--> 1.0
1.5 --floor--> 1.0
-1.4 --floor--> -2.0
-1.5 --floor--> -2.0
时间: 2024-10-14 13:57:32

分支-04. 出租车计价(四舍五入)的相关文章

分支-04. 出租车计价(15)

#include<iostream>using namespace std;int main(){    double miles;    int time,fee;    while(cin>>miles>>time){        if(miles<=3)            fee=10+(time/5)*2;        else if(miles<=10)            fee=int(10+(miles-3)*2+(time/5)*

PTA刷题——出租车计价

7-2 出租车计价 (15 分) 本题要求根据某城市普通出租车收费标准编写程序进行车费计算.具体标准如下: 起步里程为3公里,起步费10元: 超起步里程后10公里内,每公里2元: 超过10公里以上的部分加收50%的回空补贴费,即每公里3元: 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费). 输入格式: 输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔. 输出格式: 在一行中输出乘客应支付的车费(单位为元

出租车计价

1 #include<stdio.h> 2 3 int main(void) 4 { 5 double length; 6 int time; 7 double money; 8 9 scanf_s("%lf %d", &length, &time); 10 11 if (length <= 3) 12 { 13 money = 10; 14 } 15 else 16 { 17 if (length <= 10) 18 { 19 money =

Python全栈工程师 (exercises)

# 1:给定一个数,判断他是正数,负数,还是0 a = int(input("请输入一该个整数")) if a == 0: print(a, "是0") elif a > 0: print(a, "是正数") else: print(a, "是负数") # 练习2:输入一个季度的数字 输出该季度有那几个月 b = int(input("请输入一个季度:1.春季2.夏季3.秋季4.冬季")) if b

王重阳160809311第5次作业

#include<stdio.h>//输入三个数有小到大排序 int main() { int x; int y; int z; printf("输入三个整数:"); scanf("%d %d %d",&x,&y,&z); if(x<y && x<z) { if(y<z) printf("按从小到大排序为:%d %d %d\n",x, y, z); if(y>z) pri

钟国晨160809323

#include<stdio.h>//x的n次方 int mypow(int x, int n) { int i,c=1; for(i=1;i<=n;i++) c=c*x; return c; } int main() { int x,n; printf("请分别输入x,n的值:\n"); scanf("%d %d",&x,&n); printf("%d",mypow(x,n)); return 0; } #in

第五次作业160809308周子济

#include <stdio.h> int main() { int x=90; int y;//车速 printf("超速的车速:"); scanf("%d",&y); if(y>1.1*x && y<1.5*x) { printf("处罚200元"); } if(y>1.5*x) { printf("吊销执照"); } #include<stdio.h>

555555555

1. #include<stdio.h> int main()//比较大小 { printf("请输入三个整数:"); int a,b,c; scanf("%d %d %d",&a,&b,&c); if(a>b) { if(b>c) printf("从小到大顺序是:%d %d %d",c,b,a); else if(c>b&&a>c) printf("从小到大顺

丛铭俣 160809324 (作业5)

1. #include<stdio.h> int main()//比较3个整数大小 { int a,b,c; printf("请输入3个整数:"); scanf("%d %d %d",&a,&b,&c); if(a<b && a<c && b<c) printf("%d %d %d",a,b,c); if(b<a && b<c &am