javascript中的数字玩法,颠覆你的眼睛

1、JavaScript中的数字中有一些很奇葩的现象。

在Chrome控制台中可以自己做一下实验:

1 === 1.0 ; //true

习惯了强类型语言,如java,c,OC看到这个结论还是有点小迷茫的。这是因为JavaScript内部,所有数字都是以64位浮点数形式存储的,包括正数。它遵循IEEE 754标准。

再看,浮点数的计算。

0.1 + 0.2;

浮点数

发现,0.3 - 0.2 不等于 0.2 - 0.1。所以在做浮点数计算和比较的时候还是要小心的。

对于整数运算,JavaScript仅支持 32位

原文地址:https://www.cnblogs.com/wjw-blog/p/7237030.html

时间: 2024-10-06 00:53:54

javascript中的数字玩法,颠覆你的眼睛的相关文章

JavaScript 中的数字和日期类型

本章节介绍如何掌握Javascript里的数字和日期类型 数字EDIT 在 JavaScript 里面,数字都是双精度浮点类型的 double-precision 64-bit binary format IEEE 754 (也就是说一个数字只能在 -(253 -1) 和 253 -1之间).没有特定的数据类型为整型.除了能够表示浮点数,号码类型有三个符号值: +Infinity.-Infinity和 NaN (not-a-number).参见Javascript指南中的 JavaScript

javascript中比较数字大小

做项目,遇到一个让人非常纠结的问题,就是获取的两个值比较,却出现了一位数比二位数大的情况.刚开始还以为哪里写错了,检查了几遍,用ie调了下,意识到是应该是用错了比较方法了.才想起以前也碰到过这种情况的,究其原因,就是js默认比较字符串,先比较两个的第一个字符,相同再比较第二个,以此类推.所以,对于数字的比较,首先要转换为数字,再进行比较,就不会出错了.js中数值比较,如下所示: var id=document.pageaction.pageNow.value;-->4 var count=doc

Winodws中的定时器玩法

SetTimer是一种API函数,位于user32.dll中.你想每隔一段时间执行一件事的的时候,你可以使用它. 使用定时器的方法比较简单,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序.通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数.不需要指定定时器时,可以调用对应的KillTimer函数销毁指定的时钟. 1 函数如何使用 1.1 用WM_TIMER来设置定时器 SetTimer函数的原型 UINT_PTR SetTimer( HW

JavaScript中Number数字数值浮点运算有误差

JavaScript浮点运算的一个bug. 比如:7*0.8 JavaScript算出来就是:5.6000000000000005 //调用:numberExcept(arg1,arg2) //返回值:arg1除以arg2的精确结果function   numberExcept(arg1,arg2){ var t1=0,t2=0,r1,r2;  try{t1=arg1.toString().split(".")[1].length}catch(e){}  try{t2=arg2.toS

Python 中素数的玩法

质数 质数又称素数.指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数.换句话说,只有两个正因数(1和自己)的自然数即为素数.比1大但不是素数的数称为合数.1和0既非素数也非合数.素数在数论中有着很重要的作用. 质数的分布规律是以36N(N+1)为单位,随着N的增大,素数的个数以波浪形式渐渐增多. 孪生质数也有相同的分布规律. 素数,普遍认为的分布规律是没有规律.时而连续出现,时而又相隔很远很远.有远亲.有近邻,地球对面也还有几个好朋友.素数,真的就没有规律吗?合数可以

关于JavaScript中计算精度丢失的问题

摘要: 由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而JavaScript中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失. 为了避免产生精度差异,把需要计算的数字升级(乘以10的n次幂)成计算机能够精确识别的整数,等计算完毕再降级(除以10的n次幂),这是大部分编程语言处理精度差异的通用方法. 关键词: 计算精度 四舍五入 四则运算 精度丢失 1. 疑惑 我们知道,几乎每种编程语言都提供了适合货币计算的类.例如C#提供了decimal,Java提供了BigDecim

为什么不要在 JavaScript 中使用位操作符?

如果你的第一门编程语言不是 JavaScript,而是 C++ 或 Java,那么一开始你大概会看不惯 JavaScript 的数字类型.在 JavaScript 中的数字类型是不区分什么 Int,Float,Double,Decimal 的.咳咳,我说的当然是在 ES6 之前的 JS,在 ES6 的新标准中提出了像 Int8Array 这样新的数据类型.不过这不是本文叙述的重点,暂且就不谈啦.本文将更着重地谈 JS 的数字类型以及作用于它的位操作符,而关于包装对象 Number 的更多了解可以

[转载]JavaScript 中小数和大整数的精度丢失

标题: JavaScript 中小数和大整数的精度丢失作者: Demon链接: http://demon.tw/copy-paste/javascript-precision.html版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款. 先来看两个问题: 0.1 + 0.2 == 0.3; // false 9999999999999999 == 10000000000000000; // true 第一个问题是小数的精度问题,在业界不少博客里已有讨论

JavaScript的三种工业化玩法

JavaScript的三种工业化玩法 软件工程中任何的语言如果想要写出健壮的代码都需要锋利的工具,当然JavaScript也不例外,很多朋友刚入门的时候往往因为工具选的不对而事半功倍,JavaScript同样需要软件调试技术,希望本文总结的三种工具会对大家的学习有所帮助. 任何语言的学习都离不开实践,不写代码是永远学不会编程的,当然javascript也不例外,很多人推荐直接浏览器调试,个人觉得这个推荐应该是非常初级的,比如Chrome, Firefox确实提供了实用的前端调试工具,但是个人认为