zoukankan      html  css  js  c++  java
  • Javascript你不知道的那些事!(数字计算篇-变态篇)无意中聊天发现的一些奇怪的事情

    javascript:alert(0.1 + 0.2)  

    如果看到这样一道题你会怎么思考了!大家肯定第一反应0.3,但是考虑到我已经这样问了!那么幼稚的答案我会专门写篇文章吗

    然后人就开始折磨自己了会不会是 0.10.2呢

    然后结果还是很拉风的

    0.30000000000000004

    再来0.1+0.7

    0.7999999999999999

    这是由于十进制到二进制的转换导致的精度问题!因为计算机执行的是二进制算术,当一个十进制数不能准确的转化着二进制数时,这种精度误差就无法避免。如果对这简单的原因描述还是迷惑的话,那就接着看文章后面的具体描述吧!

    然后 有趣的再来个有趣的事情

    parseInt(0.0000008)

    这个结果是多少呢,你说是0,我说是8,你又说那是8

    parseInt(0.08)

    那么这个你又说是8,但我又说是0。。。我估计你有凌乱了

     我纵里寻她千百度。。。。然后找到的结果

    很多语言在浮点和整形之间的运算`都有精度问题
    只不过可能js的略风骚一些

    认识javascript的浮点运算

     学过js的同学都知道,js中的数字都是用浮点数表示的,并规定使用IEEE 754 标准的双精度浮点数表示。

     IEEE 754 标准的浮点数简介(呵呵,这可是大学里学习的组成原因知识噢)

     IEEE 754 规定了两种基本浮点格式:单精度和双精度。

     IEEE单精度格式具有24 位有效数字精度(包含符号号),并总共占用32 位。

     IEEE双精度格式具有53 位有效数字精度(包含符号号),并总共占用64 位。

    说明: 基本浮点格式是固定格式,相对应的十进制有效数字分别为7位和17位。基本浮点格式对应的C/C++类型为float和double。

  • 相关阅读:
    P2176 [USACO14FEB]路障Roadblock
    洛谷 P1187 3D模型
    洛谷 P2777 [AHOI2016初中组]自行车比赛
    洛谷P2896 [USACO08FEB]一起吃饭Eating Together
    洛谷P2983 [USACO10FEB]购买巧克力Chocolate Buying
    洛谷 P2858 [USACO06FEB]奶牛零食Treats for the Cows
    Restaurant
    OR in Matrix
    poj 3321Apple Tree
    Codeforces Round #204 (Div. 2) C. Jeff and Rounding
  • 原文地址:https://www.cnblogs.com/LoveOrHate/p/4422757.html
Copyright © 2011-2022 走看看