** * 参考:https://www.jianshu.com/p/c3c6cf0dce66 * @author zls * @date 2019/8/20 */ public class ComputedDemo { public static void main(String[] args) { // JAVA的double型数据不能进行精确计算 double n = 1.01 + 2.13; System.out.println("n = " + n); // n = 3.1399999999999997 // double型数值在整数部分超过7位时就自动转化为科学记数法表示。 System.out.println(12345678.0); // 1.2345678E7 /** * 浮点型数据运算: * BigDecimal是用来精确计算的 * 缺点:使用BigDecimal的坏处是性能比double和float差,在处理庞大,复杂的运算时尤为明显,因根据实际需求决定使用哪种类型。 */ BigDecimal x = new BigDecimal("2"); // BigDecimal x = BigDecimal.valueOf(2); BigDecimal y = new BigDecimal("3"); BigDecimal z = x.add(y); System.out.println("相加:" + z); // 5 z = x.subtract(y); System.out.println("相减:" + z); // -1 z = x.multiply(y); System.out.println("相乘:" + z); // 6 z = x.divide(y, BigDecimal.ROUND_HALF_UP); System.out.println("相除:" + z); // 1 z = x.divide(y, 3, BigDecimal.ROUND_HALF_UP); System.out.println("设置精度:" + z); // 0.667 BigDecimal a = new BigDecimal("1"); BigDecimal b = new BigDecimal("2"); BigDecimal c = new BigDecimal("1"); int result1 = a.compareTo(b); int result2 = a.compareTo(c); int result3 = b.compareTo(a); System.out.println(result1); System.out.println(result2); System.out.println(result3); // -1、0、1,即左边比右边数大,返回1,相等返回0,比右边小返回-1。 } }