首页 微博热点正文

什么是大数值吴品儒?用脚趾头想也知道,当然是“大”的数值(233)。Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表医本正锦示多大的数值呢?理论上,可以表示任意长度,任意精度,想要多大,就能有多大。

为什么要用大数值?理由很简单,当整数跟浮点数的精度不能满足要求时,就需要用更大或者精度更高的类型,这时候大数值就应运而生了。

short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)。

int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的t6娱乐登录31次方-九劫苍龙帝1)

long的取值范围为(-9223372036854774808~9223372036854774807)科斯莫利基德,占用8个字节(-2的63次方到2的63次方-1)

float的取值范围为3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的夹乳38次方,同样,e-45表示乘以10的负45次方)占用忍龟拉莫斯多少钱4个字节

double的取值范围为1.79卫婉燕7693e+308~ 4.9000000e-324 占用8个字节

不管是整数型还是浮点型,它们的表示范围和精度都是有限的,所我说你做的游戏指令以有时候无法满足要求或者要求高精度计算时,就需要用到大数值了。先来看一个栗子。

public class Test{新疆奇人艾米尔真相
publi欧元英文c static void main(String[] args) {
double result = 2.0-1.1;
System.out.println(result);
}
}

你猜,结果是什么?

惊不惊喜?意不意外?你也许会觉得,WTF?!!不是0.9吗申港3路?可事实上,由于浮点数的存储及运算规看比则上的规定,就出现了上图结果。事实上,浮点型无法精确的表示1.1的小数部分。那到底是为什么呢?

此处省略一万字。。。

这样的不精确,在需要严格结叶一茜女儿果的情况时是不允许出现的,这时,我们就需要用到大数值了。改荣锦路写后如下:

import java.math.BigDecimal;
public class Test{
public static void main(String[] args) {
BigDecimal result = BigDecimal.valueOf(2.0).subtract(BigDecimal.valueOf(1.1));
System.out.println(result);
}
}

现在就能得到我主母罗苏拉们想要的结果了。

大数值运算跟普通运算不一样,由于Java里的大数值没有重载运算符操作,也没有赋予程序员这样的权力,所以只能女囚门通过调用方法的方式进行计算。

+——add();
Syst胡杏儿,杨树林,酚氨咖敏片em.out.println(BigInteger.valueOf(10).add(BigInteger.valueOf(5)));
- ——subtract();
System.out.println(BigInteger.valueOf(10).subtract(BigInteger.valueOf(5)));
*——multiply();
System.out.println(BigInteger.valueOf(10).multiply(BigInteger.valueOf(5)));
/——divide();
System.out.println(BigInteger.valueOf(10).divide(BigInteger.valueOf(5)));
  %——mod();取余数
  System.out.println(BigInteger.valueOf(10).mod(BigInteger.valueOf(5)));
  比较——compareTo();大于则返回正数,小于则返回负数,等于返回0.
  System.out.println(Bi李维嘉发伤心感慨gInteger.valueOf(10).compareTo(Bi亥页gInteger.valueOf(5)))
  静态方法valueOf()用于将整数浮点数转化成大数值对象。

大数值的内容其实并不多,之后多加练习便能熟练掌握。

至此,本篇内容结束,欢迎继续关注!

真正重要的东西,用眼睛是看不见的。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。