BigDecimal

15 篇文章 0 订阅
  • 为什么要用BigDecimal?

因为double、float表示的小数范围有限,且精度不够,不能精确计算。

float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。

poj1001Exponentiation

theme:给定实数R与整数n,输出R^n的精确解,不能输出前导0!

solution:利用java BigDecimal类,注意去掉后缀0并转为字符串时要避免科学计数法,最后如果以0开头则删掉0

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
	public static void main(String argv[]){
		Scanner in=new Scanner(System.in);
		while(in.hasNext()){
			String s=in.next();
			int n=in.nextInt();
			BigDecimal a=new BigDecimal(s);
			BigDecimal ans=a.pow(n).stripTrailingZeros();
			System.out.println(ans.toPlainString().replaceAll("^0", ""));//去掉前导0,即0.2变为.2,注意因为这里不会等于0才这样,应该判断以.0开头,再sunString(1)
		}
	}
}

设置精度:

result.setScale(2,BigDecimal.ROUND_HALF_EVEN)  //保留2位小数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值