1001_北大oj题目理解学习

题目:输入一序列的正实数和幂次,然后打印结果
这道题是关于大数计算的(大数求幂)
自己用了最简单的方法,运行后告诉我结果是inf
然后不能准确的计算数据的大小
看了网上的解答后,才明白要考虑很多
有两种解答方法,一种是java,一种是C++
下面先学习java方法:

import java.io.*;
import java.util.*;
import java.math.BigDecimal;

public class oj_1001
{
    public static void main(String args[])throws Exception
    {
        Scanner cin=new Scanner(System.in);
        while(cin.hasNext())
        {
            BigDecimal r=cin.nextBigDecimal();
            int n=cin.nextInt();
            r=r.pow(n).stripTrailingZeros();//去掉小数点后面的零
            System.out.println(r);

            String m_string=r.toPlainString();//不带指数段的字符串表示形式
            if(m_string.charAt(0)=='0')
            m_string=m_string.substring(1);//去除前面的0
            System.out.println(m_string);
        }
    }
}
  • cin.hasNext() // Returns true if the iteration has more elements.
    即遍历时有元素就返回true 否则返回false
    这里是为了找到底数和指数之间的空格,以此来保存前面的底数
  • BigDecimal
    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算,在商业计算中要用java.math.BigDecimal
    双精度浮点型变量double可以处理16位有效数
    float和double只能用来做科学计算或者是工程计算

  • cin.nextBigDecimal()是为了取到底数

  • cin.nextInt()是为了取到指数

  • r.pow(n) //Returns a BigDecimal whose value is (thisn), The power is computed exactly, to unlimited precision.没有精度的限制,非常准确

  • 后面三行代码是为了去除最后结果前面的0

  • 总结:学会使用BigDecimal大浮点型对象
    发现在数据处理方面,java比c++好用一些
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值