我有一个项目要求我用 java 设计一个计算器,我应该让用户选择显示 50 位或 100 位。
当我进行乘法运算或任何其他大数字运算时,您知道的问题不会显示所有数字,它将显示大约 20 位数字,左边将显示为 E(某个数字)!
我尝试使用BigDecimal
,DecimalFormat
但无法解决。
我有一个项目要求我用 java 设计一个计算器,我应该让用户选择显示 50 位或 100 位。
当我进行乘法运算或任何其他大数字运算时,您知道的问题不会显示所有数字,它将显示大约 20 位数字,左边将显示为 E(某个数字)!
我尝试使用BigDecimal
,DecimalFormat
但无法解决。
查看BigDecimal
课程(BigInteger
如果您对小数位不感兴趣,请查看课程。)。它应该打印任意数量的数字就好了。(无需使用DecimalFormat
顺便说一句。)
BigDecimal x = new BigDecimal("123456789123456789123456789");
BigDecimal y = new BigDecimal("987654321987654321987654321");
BigDecimal z = x.multiply(y);
System.out.println(z);
输出:
121932631356500531591068431581771069347203169112635269
使用 BigDecimal
System.out.println(new BigDecimal(1.1).multiply(new BigDecimal(1.8)));
打印 104 位数字
1.9800000000000002087219286295294335439472797061332458086428264139311483660321755451150238513946533203125
使用 valueOf 转换double
你可能期望的
System.out.println(BigDecimal.valueOf(1.1).multiply(BigDecimal.valueOf(1.8)));
印刷
1.98