//针对超过整数范围的运算(整数最大值:2147483647) BigInteger(String val)
//加 public BigInteger add(BigInteger val) //减 public BigInteger subtract(BigInteger val) //乘 public BigInteger multiply(BigInteger val) //除 public BigInteger divide(BigInteger val) //返回商和余数的数组 public BigInteger[] divideAndRemainder(BigInteger val)
import java.math.BigInteger; public class BigIntegerDemo { public static void main(String[] args) { BigInteger bi1 = new BigInteger("100"); BigInteger bi2 = new BigInteger("50"); BigInteger[] bis = bi1.divideAndRemainder(bi2); System.out.println("商:" + bis[0]); System.out.println("余数:" + bis[1]); } } //运行结果 商:2 余数:0
由于在运算的时候,float类型和double很容易丢失精度(下例为演示),所以为了能精确的表示、计算浮点数,Java提供了BigDecimal
public class BigDecimalDemo { public static void main(String[] args) { System.out.println(0.09 + 0.01); System.out.println(1.0 - 0.32); System.out.println(1.026 * 100); System.out.println(1.502 / 100); System.out.println(1.0 - 0.17); } } //运行结果 0.09999999999999999 0.6799999999999999 102.60000000000001 0.01502 0.83
我们来帖一组说明
public BigDecimal(double val)
将double转换为BigDecimal ,这是double的二进制浮点值的精确十进制表示。
返回的BigDecimal是(10scale × val)是一个整数的最小值。
参数
val - double值转换为 BigDecimal 。
异常
NumberFormatException - 如果 val 是无限或NaN。
构造方法:建议使用 → BigDecimal(String s)
import java.math.BigDecimal; public class BigDecimalDemo2 { public static void main(String[] args) { BigDecimal bd1 = new BigDecimal("0.09"); BigDecimal bd2 = new BigDecimal("0.01"); System.out.println("加:" + bd1.add(bd2)); BigDecimal bd3 = new BigDecimal("1.0"); BigDecimal bd4 = new BigDecimal("0.32"); System.out.println("减:" + bd3.subtract(bd4)); BigDecimal bd5 = new BigDecimal("1.026"); BigDecimal bd6 = new BigDecimal("100"); System.out.println("乘:" + bd5.multiply(bd6)); BigDecimal bd7 = new BigDecimal("1.502"); BigDecimal bd8 = new BigDecimal("100"); System.out.println("除:" + bd7.divide(bd8)); } } //运行结果 加:0.10 减:0.68 乘:102.600 除:0.01502
如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^
如果能帮到你的话,那就来关注我吧!(系列文章均会在公众号第一时间更新)
一个坚持推送原创Java技术的公众号:理想二旬不止