标题: JavaScript 中小数和大整数的精度丢失作者: Demon链接: http://demon.tw/copy-paste/javascript-precision.html版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款. 先来看两个问题: 0.1 + 0.2 == 0.3; // false 9999999999999999 == 10000000000000000; // true 第一个问题是小数的精度问题,在业界不少博客里已有讨论…
最近遇到个比较奇怪的问题,js函数里传参,传一个位数比较大,打印arguments可以看到传过来的参数已经改变. 然后查了一下,发现确实是js精度丢失造成的.我的解决方法是将数字型改成字符型传输,这样就不会造成精度丢失了.如下图: JS 数字丢失精度的原因 计算机的二进制实现和位数限制有些数无法有限表示.就像一些无理数不能有限表示,如 圆周率 3.1415926...,1.3333... 等.JS 遵循 IEEE 754 规范,采用双精度存储(double precision),占用 64 bi…
定义正则表达式的方法 定义正则表达式的方法有两种:构造函数定义和正则表达式直接量定义.例如: var reg1 = new RegExp('\d{5, 11}'); // 通过构造函数定义 var reg2 = /\d{5, 12}/; // 通过直接量定义   正则表达式直接量字符 \o:NUL字符(\u0000) \t:制表符(\u0009) \n:换行符(\u000A) \v:垂直制表符(\u000B) \f:换页符(\u000C) \r:回车符(\u000D) \xnn:由十六进制数nn…
本文主要介绍怪异的Javascript,毋庸置疑,它绝对有怪异的一面.当软件开发者开始使用世界上使用最广泛的语言编写代码时,他们会在这个过 程中发现很多有趣的“特性”.即便是老练的Javascript开发者也可以在本文找到一些有趣的新陷阱,请留意这些陷阱,当然也可以尽情享受由这些陷阱 带来的“乐趣”! AD: 本文主要介绍怪异的Javascript,毋庸置疑,它绝对有怪异的一面.当软件开发者开始使用世界上使用最广泛的语言编写代码时,他们会在这个过 程中发现很多有趣的“特性”.即便是老练的Java…
鉴于自己在JavaScript这方面比较薄弱,所以就找了一本书恶补了一下(被称为犀利书的JavaScript权威指南).书的内容虽然多了点,但这也充分说明了js中的东西还是挺多的.虽然我们的定位不是前端,但最好还是了解一下js这个发展了将近20年但依然很火的技术. 两年前,写过一篇关于JavaScript闭包的博客,所以对闭包这个词印象很深,在看这书的时候,又看到了闭包,那么这次再看闭包,会有什么不同的理解呢? 大家都知道,在JavaScript中是没有类的概念的,更没有私有.公有的成员变量这样…
javascript中(function($){...})(jQuery)写法是什么意思   这里实际上是匿名函数function(arg){...}这就定义了一个匿名函数,参数为arg 而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:(function(arg){...})(param)这 就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数 而(function($){...}) (jQuery)则是一样的,之所以只…
在这篇文章中,我会深入理解JavaScript最根本的组成之一 : "执行环境(执行上下文)".文章结束后,你应该对解释器试图做什么,为什么一些函数/变量在未声明时就可以调用并且他们的值是如何确定的有一个清晰的认识. 什么是执行环境(执行上下文)当代码在JavaScript中运行的时候,代码在环境中被执行是非常重要的,它会被评估为以下之一类型来运行:全局代码:默认环境,你的代码第一时间在这儿运行.函数代码:当执行流进入一个函数体的时候.Eval代码:在eval()函数中的文本. 你可以…
前言上一篇介绍了3种json解析工具的使用方法,对于基础数据的解析没有任何问题.我们传输的json数据里有unsigned long型数据,需要借助json解析工具得到正确的unsigned long型数据.本篇对比它们对64bit(8 byte)大整形数据的解析精度.json样本数据random_code为8 byte型大整数.  一.cjson解析精度测试 1 #include "cJSON.h" 2 3 #include <iostream> 4 5 // g++ -…
使用了HuTool这个雪花算法后,会出现丢失精度的问题 hutool算法使用地址 对于一些大的业务表,自增主键这里 接口层得注意下是否会产生大数值 设计接口的时候采用String类型. 在项目中,我们可能采取bigint作为数据库主键,Java类中我们一般采用Long类型来映射.对于大数值比如1218106361019314176,数据在服务端好好的,到了前端会发现变成1218106361019314200,造成精度丢失,这样显然是有问题的. 解决办法: 我们只需要配置一下json配置即可,把所…
学习正则表达式 今年的第一篇javascript文章就是这个正则表达式了,之前的文章是转载别人的,不算自己的东西,可以忽略不计,最近突然想把转载别人的东西 统统删掉,因为转载过的文章,我根本没有从中获得收获,纯粹是浪费时间,虽然说可以留着以后需要的时候来查看,可是这是一个非常不好的念头.今年我将不会 再转载别人的一篇文章了,如果觉得有用,我会把它收藏到云笔记上,推荐使用印象笔记,比网易的云笔记好了N倍,谁用谁知道. 如果看到好的博客,我将会把它订阅到feedly里面,有空的时候就会翻出来看看他们…