Java中的BigInteger和BigDecimal类

我是个ACMnewer,看到ACM中很多题目涉及到高精度运算,以前都是用C来模拟的,但是后来看到大家遇到这种题都直接用Java的BigInteger和BigDecimal... 我是个ACM newer,看到ACM中很多题目涉及到高精度运算,以前都是用C来模拟的,但是后来看到大家遇到这种题都直接用Java的BigInteger和BigDecimal类,我想问一下其中有哪些使用方法及函数,先谢过了
不知道每个函数分别是什么功能啊……
展开
 我来答
骄闽雪3630
2011-01-03 · TA获得超过3427个赞
知道小有建树答主
回答量:2833
采纳率:0%
帮助的人:1400万
展开全部
java写高精度运算~~跟C写的差不多。

先开两个数组,每一位数组元素存一位大整数数位
比如456687855就是

0 1 2 3 4 5 6 7 8 9
5 5 8 7 8 6 6 5 4

做+法就是两个数组按位相加然后进位

做减法就是按位相减然后借位

乘法就是取第二数组的数字按位与一数组乘
再把乘到东西累加起来

除法就是你怎么算就怎么写程序就行。

C(1000,500) 这样的东西不能直接去算。
否则算到100000,50000就铁定超时了(1个小时未必算的出来)
你把100000所有质数存在数组里。
算的时候相乘就是把所有因数累加进各质数的变量。除的时候就减

比如质数数列

0 1 2 3 4 5 6 7 8 9 //数组位
2 3 5 7 11 13 17 19 23 29 //质数
10 8 3 2 0 0 0 0 0 0 //在这个大数字中有多少个质数相乘
现在这个大数字要*210
就变成
11 9 4 3 0 0 0 0 0 0
再除2就是
10 9 4 3 0 0 0 0 0 0

最后再算2^n2+3^n3+………………就行

其实还有更快的方法这个是数论讨论的范围。
想想还是能改进效率的。
但是思路到这就已经清晰了。
136234058
2011-01-03 · 超过37用户采纳过TA的回答
知道答主
回答量:146
采纳率:0%
帮助的人:94.8万
展开全部
你还真会偷懒啊,自己看一下API不就知道了么
没有的话可以留邮箱,我发给你

给你列几个常用的吧
public BigDecimal add(BigDecimal augend)
返回一个 BigDecimal,其值为 (this + augend),其标度为 max(this.scale(), augend.scale())。也就是加法

public BigDecimal subtract(BigDecimal subtrahend)
返回一个 BigDecimal,其值为 (this - subtrahend),其标度为 max(this.scale(), subtrahend.scale())。 减法

public BigDecimal multiply(BigDecimal multiplicand)
返回一个 BigDecimal,其值为 (this × multiplicand),其标度为 (this.scale() + multiplicand.scale())。 乘法

public BigDecimal divide(BigDecimal divisor,RoundingMode roundingMode)
返回一个 BigDecimal,其值为 (this / divisor),其标度为 this.scale()。如果必须执行舍入,以生成具有给定标度的结果,则应用指定的舍入模式。 除法
参数:
divisor - 此 BigDecimal 要除以的值。
roundingMode - 要应用的舍入模式。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小猫钓鱼1986
2011-01-03 · TA获得超过456个赞
知道小有建树答主
回答量:140
采纳率:100%
帮助的人:163万
展开全部
BigInteger是没有位数限制的整数,因为我们知道int类型是只占有四个字节的。
而double,float也是只占有16位的,并且如果直接通过double运算,会导致意想不到的精度值,而要进行高精度计算就需要用BigDecimal来代替double和float。

http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c2424acff
2011-01-02 · TA获得超过166个赞
知道答主
回答量:43
采纳率:0%
帮助的人:25.8万
展开全部
自己查看java的api吧 很多方法的,自己看下能加深印象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式