zoukankan      html  css  js  c++  java
  • 课程作业02——课程中的动手动脑问题

    1.为什么double类型的数值进行运算得不到“数学上精确”的结果?

    结论:使用double类型的数值进行计算,其结果是不精确的。

    原因:double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

    2.解决精度问题可以使用使用BigDecimal类,但在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题解决方法

    原因:double并不能准确的代表BigDecimal 16位有效数以上的数字在使用BigDecimal时创建对象。而BigDecimal所创建的对象不能使用+-*/等传统的算术运算符直接对其对象进行数学运算,必须调用相对应的(f1.add(f2))等方法。 因为方法中的参数必须是BigDecimal的对象,所以定义时应为字符串。

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

    结果:

    原因:因为输出的是字符串,在语句一中,“+”直接连接两个字符,所以分别输出100和200;而在语句二中,“+”先是进行数值类型的求和运算,再用字符串输出两个整形的和。

  • 相关阅读:
    BZOJ 2038: [2009国家集训队]小Z的袜子 (莫队)
    codevs 3981 动态最大子段和(线段树)
    ACM北大暑期课培训第八天
    ACM北大暑期课培训第七天
    ACM北大暑期课培训第六天
    ACM北大暑期课培训第五天
    ACM北大暑期课培训第四天
    HDU4403-模拟、数学
    HDU4296-ChengduOnling-贪心
    POJ3176-基础DP
  • 原文地址:https://www.cnblogs.com/wxd136/p/7634279.html
Copyright © 2011-2022 走看看