zoukankan      html  css  js  c++  java
  • 动手动脑及课后实验性问题

    一关于精度损失

      关于java对于0.05+0.011-0.42等计算的不准确原因是因为计算机是以二进制来储存一个数的,有的数从二进制转化到十进制时就会出现误差这就导致了计算的不准确,比如0.01在电脑里储存的其实是0.00999999999或者是其他的一个很接近0.01的数但是计算机毕竟是拿这个接近0.01的数去运算所以就出现了计算时候的错误

    而解决这一问题的方法就是使用BigDecimal类,就比如BigDecimal a = new BigDecimal(m); BigDecimal b = new BigDecimal(n);a.add(b)来求m+n这就不会有误差,但要记住mn都是字符串类型而不能使用double类型,因为虽然BigDecimal 是可以比较精确的计算,但是double是无法精确到1/10的就像十进制无法精确表示1/3一样。Double里面的的值已经不准确了,即使BigDecimal 可以较为精确的计算但是double给他的值就是不正确的,所以没办法得到正确答案。

    二动手动脑

    以下代码的输出结果是什么?

    int X=100;

    int Y=200;

    System.out.println("X+Y="+X+Y);

    System.out.println(X+Y+"=X+Y");

    为什么会有这样的输出结果?、

      第一个为X+Y=100200第二个为300=X+Y因为第一个先计算的是一个字符串和一个数字所以‘+’被认为是连接符只是连续输出可三部分,而第二个一开始是两个数字,‘+’被认为成了加号计算出X+Y然后又输出他们的和这时就成了数字与字符串这时‘+’又被认为成了连接符。关于‘+’的运用总结一下就是2个操作数中好友字符串时为连接符,都为数字时为运算符。

     

  • 相关阅读:
    How do I access arcobjects from python?
    Win7 打开或关闭Windows功能 窗口空白 解决方案(ZZ)
    解释什么叫工作
    电脑城奸商最怕顾客知道的十条经验
    25岁前你要学会放下的八样东西
    必看十大电影
    SQL Server 中查询非中文,非英文,非数字的特殊列
    CHARINDEX 和 PATINDEX
    主流开源数据库的技术特点点评
    information_schema.routines与sysobjects
  • 原文地址:https://www.cnblogs.com/837634902why/p/7636184.html
Copyright © 2011-2022 走看看