2016冬天学习记录-1.15

---------代码二、浮点型数字的处理
在计算(2-1.1)这样一个式子的时候,会发现,用System.out.println(2-1.1);计算出来的结果并不是0.9,而是0.89999999999,这是因为计算机在计算浮点型数字的时候需要首先将数据转化为二进制,但这种转化往往使计算结果失去精确性,所以我试着换一下思路,
    开始我尝试这用printf控制输出格式:System.out.jprintf("%.2f",2-1.1);输出的结果是0.90,但实际上这种方法其实质并未发生改变。
    然后我试着用下面这种办法规避浮点数计算的出现:
System.out.println((200-110)*1.0/100);这样子结果是正确的,但是如果我事先并不知道我要计算的数a和b,那么在用
System.out.println((a*100-b*100)*1.0/100);并且前面用a和b作为变量输入的时候,就又失去精确度。
    只好求助《java解惑》给出一种类似于c++的运算符重载的办法(我第一感觉上是这样的,但实际并非如此)。即java.math.BigDecimal类来进行精确计算。
参考网址:
http://www.cnblogs.com/chenssy/archive/2012/09/09/2677279.html
http://blog.csdn.net/augus3344/article/details/51547356
(上面这两个从各个方面介绍了BigDecimal)
http://blog.csdn.net/alanzyy/article/details/8465098
(这个博客详细讲解运用BigDecimal计算除法是用到的RoungingMode参数)
http://www.yiibai.com/java/math/bigdecimal_negate.html
(讲解取反方法Java.math.BigDecimal.negate()方法实例)
大体总结如下:
-------------1、用float或者double变量构建BigDecimal对象。
    可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象
-------------2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。(我们可以在运算的时候加精度,也可以在实例化BigDecimal的时候用字符串,都可以解决二进制转化导致的失准问题)
          精度法形如:
BigDecimal abig=new BigDecimal(10.0);  
BigDecimal bbig=new BigDecimal(9.1);  
System.out.println(abig.subtract(bbig).setScale(2, BigDecimal.ROUND_HALF_UP));
         字符串法形如:BigDecimal abig=new BigDecimal("10.0");
    
-------------3、把BigDecimal对象转换成float,double,int等类型。

-------------4、补充一下,关于取反。
BigDecimal abig=new BigDecimal("10.0");
System.out.println(abig.negate());
这样就可以了。
下面使我试验过的计算步骤:
import java.math.*;
public class Demo{
    public static void main(String []atgs){
        char a[]={'2'};
        char b[]={'1','.','1'};
        System.out.println(new BigDecimal(a).//---------------方法一
        subtract(new BigDecimal(b)));
        System.out.println(new BigDecimal("2").//---------------方法二
                subtract(new BigDecimal("1.1")));
                BigDecimal abig=new BigDecimal("10.0");//---------------方法三
                BigDecimal bbig=new BigDecimal("20.0");
        System.out.println(abig.subtract(bbig));
                BigDecimal cbig=new BigDecimal(a);//---------------方法四
        BigDecimal dbig=new BigDecimal(b);
        System.out.println(cbig.subtract(dbig));
    }
}
上面都可以比较便捷的计算


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
1. 智慧监狱概述 智慧监狱的建设背景基于监狱信息化的发展历程,从最初的数字化监狱到信息化监狱,最终发展到智慧监狱。智慧监狱强调管理的精细化、监管的一体化、改造的科学化以及办公的无纸化。政策上,自2017年以来,司法部连续发布了多项指导性文件,推动智慧监狱的建设。 2. 内在需求与挑战 智慧监狱的内在需求包括数据应用与共享的不足、安防系统的单一功能、IT架构的复杂性、信息安全建设的薄弱以及IT运维的人工依赖。这些挑战要求监狱系统进行改革,以实现数据的深度利用和业务的智能化。 3. 技术架构与设计 智慧监狱的技术架构包括统一门户、信息安全、综合运维、安防集成平台和大数据平台。设计上,智慧监狱采用云计算、物联网、大数据和人工智能等技术,实现资源的动态分配、业务的快速部署和安全的主动防护。 4. 数据治理与应用 监狱数据应用现状面临数据分散和共享不足的问题。智慧监狱通过构建数据共享交换体系、数据治理工具及服务,以及基于数据仓库的数据分析模型,提升了数据的利用效率和决策支持能力。 5. 安全与运维 智慧监狱的信息安全建设涵盖了大数据应用、安全管理区、业务区等多个层面,确保了数据的安全和系统的稳定运行。同时,综合运维平台的建立,实现了IT系统的统一管理和自动化运维,提高了运维效率和系统的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值