原因简单来说是这样:2进制的小数无法精确的表达10进制小数,计算机在计算10进制小数的过程中要先转换为2进制进行计算,这个过程中出现了误差。
浮点数值采用二进制系统表示,在二进制中无法精准的表示分数1/10
这好像在十进制中无法精准得表示分数1/3
如果想要在数值计算中不允许出现误差,应使用BigDecimal类
为什么二进制无法精准表示1/10
其实跟数位表示法有关,比如十进制的情况下:
final 修饰的实列变量,必须手动赋值
final 修饰的变量 智能赋一次值
final修饰的变量一般添加static修饰 变成静态的 存储在方法区,节省空间
static 修饰的final联合修饰的变量成为"常量" 常量名要全部大写,每个单词之间采用下划线连接
常量:时间上和静态变量一样 区别在于:常量的值不能改变
常量和静态变量都是储存在方法区,并且都是在类加载时初始化