大数值
考虑下面代码的输出结果:
public static void main(String[] args){
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(303.1/1000);
} 上述代码的输出结果为:
0.5800000000000001
401.49999999999994
0.30310000000000004 计算机是二进制的,浮点数没有办法使用二进制进行精确的计算,我们的CPU是由两部分组成:指数和尾数,这样的表示方法一般都会失去一定的精度,也会产生一定的误差。
如果基本的整数和浮点数精度不能够满足需求,那么可以使用两个很有用的类:BigInteger和BigDecimal。这两个类可以处理任意长度数字序列的数值。BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。使用静态的valueOf方法可以将普通的数值转换为大数值:BigInteger int = BigInteger.valueOf(100)。大数值类型的基本方法:
add:加
subtract:减
multiply:乘
divide:除
mod:求余数
compareTo(other):如果这个大整数与另外一个大整数other相等,返回0;如果这个大整数小于另一个大整数other,返回负数;否则返回正数。使用BigDecimal进行精确计算:
BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.42");
BigDecimal result = a.subtract(b);
System.out.println(result);
输出结果为:0.48
数组
数组常见的方法:
Arrays.toString(T[] a):直接输出数组的元素。
static T copyOf(T[] a,int length)
static T copyOf(T[] a,int start, int end):返回与a类型相同的一个数组,其长度为length获得end - start。
static void sort(type[] a):采用优化的快速排序算法对数组进行排序。static int binarySearch(T[] a,T v)
static int binarySearch(T[] a,int start,int end,type v):采用二分搜索算法查找v。如果查找成功,则返回响应的下标值,否则返回一个负数值r。-r -1 是为保持数组a有序v应该插入的位置。
转载请注明原文地址: https://ju.6miu.com/read-37828.html