解题思路:由于数位较大这里采用高精度,又因为高精度写起来比较麻烦所以这里直接采用JAVA api中的高精度浮点数类型和高精度整数类型,应为高精度浮点数类型四舍五入较为麻烦所以这里改为手动四舍五入
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger a=new BigInteger("2");
int n=sc.nextInt();//输入二的次方
BigDecimal b=new BigDecimal(sc.next());//输入高精度小数
BigInteger pow = a.pow(n);//2的n次方
BigDecimal multiply = b.multiply(new BigDecimal(pow));//然后将两数相乘
//这里手动四舍五入
String[] split = multiply.toString().split("\\.");//由于使用字符传分割直接.的化是特殊字符所以这里用量//将其变为普通字符
BigInteger k=new BigInteger(split[0]);//将整数位保留
if (split[1].charAt(0)>='5'){//判断小数第一位是否为5入的那个数
System.out.println(k.add(new BigInteger("1")));//是的话就给正数+1
}else {
System.out.println(split[0]);//不是则直接舍去
}
}
}
标签:2024,BigInteger,BigDecimal,高精度,题解,蓝桥,split,new,四舍五入
From: https://blog.csdn.net/weixin_67289517/article/details/144309741