课后作业02-2-课程中的所有动手动脑的问题以及课后实验性的问题,整理成一篇文档。
1、 运行代码
2、为什么double类型的数值进行运算得不到“数学上精确”的结果?
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
3、在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)
double不能准确的代表BigDecimal(String) 16位有效数以上的数字,在使用BigDecimal时,应用*、/构造器创建对象才有意义。BigDecimal所创建的对象不能使用传统的等算术运算符直接对其对象进行数学运算,而必须调用相对应的方法。方法中的参数必须是BigDecimal的对象。
4、 以下代码输出结果及原因
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
"X+Y="在前时,默认把X,Y转化为String型,"X+Y="使编译器认为X,Y是String型,System.out.println()本身的参数默认为String型,此时默认了转化,有了此结果;第二个事简单输出,没有让计算器产生“误解”。