首页 课程 师资 教程 报名

Java大数值转换

  • 2020-09-22 16:49:08
  • 1878次 动力节点

在java语言中,包括了很多种java数据类型,相信大家对这些基础知识并不陌生,但是有时候这些数据类型的精度不能满足要求时,就需要用更大或者精度更高的类型,这时候就需要使用到大数值。那么大数值是什么?Java大数值转换又是怎样进行的?这篇文章给你答案,一起来学习下面的内容吧!

Java基本数据类型包括四大类八种,那么什么是java大数值呢?大数值就是用来表示“大”的数值,在理论上,大在任意长度和任意精度上,想要多大,就能有多大。这是对于java零基础的新手朋友们学习java大数值转换必须先要知道了解的基本概念。

如果基本的整数和浮点数精度不能满足需求,就可以使用java.math包中的两个很有用的类:Biglnteger和BigDecimal。这两个类可以处理任意长度的数值。BigInteger类实现了任意精度的整数运算,Big Decimal实现了任意精度的浮点数运算。

java大数值转换的方法是什么呢?使用静态的valueOf方法可以把普通的数值转换为大数值:

Biglnteger a= Biglnteger.value0f(100);

可惜的是,不能使用人们熟悉的算术运算符(如+和*)处理大数值,而需要使用大数值类中的add和multiply方法。

Biglnteger c = a.add(b); //c =a+ b

Biglnteger d = c.multiply(b.add(Biglnteger.value0f(2))); //d = c*(b + 2)

与C++不同,java没有提供运算符重载功能,程序员无法重定义+和*运算符,使其应用于Biglnteger类的add和multiply运算。Java语言的设计者确实为字符串的连接重载了+的运算符,但没有重载其他的运算符,也没有给java程序员自己重载运算符的权利。

这是一个中奖概率程序:

image.png

下面对中奖概率程序加以改进——大数值转换,使其可以采用大数值进行计算:

image.png

假设你被邀请参加抽奖活动,并从490个可能的数值中抽取60个,那么这个程序会得出中奖概率是716 395 843 461 995 557 415 116 222 540 092 933 411 717 612 789 263 493 493 351 013 459 481 104 668 848次中1次。

在第一个未修改的中奖程序中,用于计算的语句是:

lotteryOdds = lotteryOdds*(n - i + 1)/i;

如果大数值转换后,使用大数值,相应的语句为:

lotteryOdds=lotteryOdds.multiply(Biglnteger.valueOf(n-i+1) ).divide(Biglnteger.valueOf(i));

以上就是今天我们学习的java大数值转换的内容,并通过修改一个程序的例子,看到了如何采用大数值计算中奖概率,希望大家都能学会java大数值转换的方法,并在平时多加练习,掌握大数值的内容,以提高自己的java技能。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交