Java 蓝桥杯 小数第n位

我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。
如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。

本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。
输入格式
一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1000000000)

输出格式
一行3位数字,表示:a除以b,小数后第n位开始的3位数字。

样例输入
1 8 1

样例输出
125

import java.util.Scanner;

public class Main {
	public static void main(String[]args) {
		Scanner scan=new Scanner(System.in);
		int a,b; //进行除法运算的两个数
		int n,m,d;
		a=scan.nextInt();
		b=scan.nextInt();
		n=scan.nextInt();
		a%= b;                            //只求小数位的话,a对b取模即可
        for(int i = 0 ; i < n-1 ; i++) { //计算掉n之前的小数
            a*= 10;                    //每取一位小数就向前进一位
            a%= b;                       
        }
        for(int i = 0 ; i < 3 ; i++) {
            a*= 10;
            System.out.print(a/b);    //开始输出所有的n位开始的小数
            a%= b;
        }
    }
}

之前还写过一种特别麻烦的方法,虽然也可以算的出来,但是判题没有过,不知道是哪里出了问题,先放在这里过几天再来看看。

import java.util.Scanner;

public class Main {
	public static void main(String[]args) {
		Scanner scan=new Scanner(System.in);
		double a,b; //进行除法运算的两个数
		int n,m,d;
		a=scan.nextDouble();
		b=scan.nextDouble();
		n=scan.nextInt();
	//	System.out.println(a/b);
		d=(int) (a/b);
		double c=a/b-d;//c仅为小数部分
		m=getNumberDecimalDigits(c); //获得浮点数c的小数位数
		int x[]=new int[10000000];
		for(int i=0;i<m;i++) {
			c*=10;
			x[i]=(int) (c%10);
		}
		if(m<n+3) {//位数不够补零
			for(int i=m;i<n+3;i++) {
				x[i]=0;
			}
		}
		for(int i=n-1;i<n+2;i++) {
			System.out.print(x[i]);
		}
	}
	public static int getNumberDecimalDigits(double number) {//获取小数点后的位数
	    String moneyStr = String.valueOf(number); //将double转换成字符串
	    String[] num = moneyStr.split("\\."); //将字符串分为小数点前的部分和小数点后的部分
	    if (num.length == 2) {
	        for (;;){
	            if (num[1].endsWith("0")) { //测试此字符串如果以0结尾,就去掉结尾的 0
	                num[1] = num[1].substring(0, num[1].length() - 1);
	            }
	            else {
	                break;
	            }
	        }
	        return num[1].length();
	    }
	    else {
	        return 0;
	    }
	}
}
发布了11 篇原创文章 · 获赞 0 · 访问量 314

猜你喜欢

转载自blog.csdn.net/qiankendeNMY/article/details/105334966