zoukankan      html  css  js  c++  java
  • 计算机浮点计算异常

    我们都知道,1.2-1.0=0.2,这是小学的小数点运算就学过了的

    然而,公认比人脑计算能力更强的计算机在这个人人都会的小数计算上却总是‘计算错误’:

     这却是为什么呢?

    实际上,这是由计算机内部的存储限制所决定的。与现实世界已经习以为常的十进制计算不同,计算机内部往往是以二进制,即以0和1为基本单元,承担起存储及计算等重要功能。至于为什么要用二进制而不用十进制,感兴趣的可以另外了解,在这里只需要知道,由于计算机以二进制存储,部分十进制数无法被精确显示,只能用近似值取代,1.2在计算中的实际形式表示为:1.0011001100110011001100110011001100110011001100110011,转换为十进制就是:1.1999999999999999555910790149937383830547332763671875

    这是不可避免的运算误差,目前只能在代码编写过程中多注意到这一点,能使用整数运算的情况下尽量避免使用浮点运算,而在浮点运算时,需要确保这种程度的精度丢失不会造成严重后果

    参考资料:

    https://www.geeksforgeeks.org/floating-point-error-in-python/#:~:text=It's%20a%20problem%20caused%20when,leads%20to%20small%20roundoff%20errors.

  • 相关阅读:
    k近邻 KNN
    聚类之k-means
    支持向量机SVM、优化问题、核函数
    [THUSC 2016] 补退选 (Trie树)
    [CQOI2016] 手机号码 (数位dp)
    [CQOI2012] 交换棋子 (费用流)
    [SCOI2016] 背单词 (Trie树)
    [JSOI2009] 球队收益 (费用流)
    [BZOJ1878][SDOI2009] HH的项链 (树状数组)
    [BZOJ2151]种树
  • 原文地址:https://www.cnblogs.com/J14nWe1/p/14440437.html
Copyright © 2011-2022 走看看