博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动手动脑及课后实验
阅读量:5783 次
发布时间:2019-06-18

本文共 1512 字,大约阅读时间需要 5 分钟。

一、

运行结果:

结论:

枚举类型是引用类型!
枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。
二、
输出结果:
三、动手实验
输出结果:
结论:
使用double类型的数值进行计算,  其结果是不精确的。
 
为什么double类型的数值进行运算得不到“数学上精确”的结果?
      N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4搜索×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
举个例子来说,比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。
简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果
解决方法:
在构建BigDecimal对象时应使用字符串而不是double数值
程序代码:

import java.math.BigDecimal;

public class TestBigDecimal {  public static void main(String[] args)  

{

  BigDecimal f1 = new BigDecimal("0.05");  

  BigDecimal f2 = BigDecimal.valueOf(0.01);   

  BigDecimal f3 = new BigDecimal(0.05);

  System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");

  System.out.println("0.05 + 0.01 = " + f1.add(f2));

  System.out.println("0.05 - 0.01 = " + f1.subtract(f2));

  System.out.println("0.05 * 0.01 = " + f1.multiply(f2));

  System.out.println("0.05 / 0.01 = " + f1.divide(f2));

  System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");

  System.out.println("0.05 + 0.01 = " + f3.add(f2));

  System.out.println("0.05 - 0.01 = " + f3.subtract(f2));

  System.out.println("0.05 * 0.01 = " + f3.multiply(f2));

  System.out.println("0.05 / 0.01 = " + f3.divide(f2));

 }

}

运行结果:

 

 

转载于:https://www.cnblogs.com/hy-666/p/4859977.html

你可能感兴趣的文章
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Mindjet MindManager 2019使用教程:
查看>>
详解 CSS 绝对定位
查看>>
AOP
查看>>
NGUI Label Color Code
查看>>
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
查看>>
vue组件开发练习--焦点图切换
查看>>
浅谈OSI七层模型
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
python实现牛顿法求解求解最小值(包括拟牛顿法)【最优化课程笔记】
查看>>
js中var、let、const的区别
查看>>
腾讯云加入LoRa联盟成为发起成员,加速推动物联网到智联网的进化
查看>>
从Python2到Python3:超百万行代码迁移实践
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>