首页 > 其他分享 >JS精度丢失

JS精度丢失

时间:2023-11-22 20:23:43浏览次数:34  
标签:存储 数字 js 丢失 JS 精度 小数

精度丢失

JS 数字类型只有number类型,相当于其他强类型语言中的double类型(双精度浮点型),不区分浮点型和整数型。在内部,数字是以 64 位格式 IEEE-754 表示的,所以正好有 64 位可以存储一个数字:其中 52 位被用于存储这些数字,其中 11 位用于存储小数点的位置,而 1 位用于符号。

整数精度丢失

alert( 9999999999999999 ); // 显示 10000000000000000

有 64 位来表示该数字,其中 52 位可用于存储数字,但这还不够。所以最不重要的数字就消失了。JavaScript 不会在此类事件中触发 error

小数精度丢失

  • 整数转二进制用除二取余法;小数转二进制用乘二取整法。问题就在于小数乘二取整会有无限循环的情况。所以使用二进制数字系统无法 精确 存储 0.10.2

解决方法

  • 将小数转化为整数进行运算:因为小数乘二取整会有无限循环的情况,但是整数除二取余是不会的
  • 限制精度,只保留小数部分位数:因为小数精度过高的情况下可能出现无限循环
  • 第三方库:math.jsbignumber.jsdecimal.jsbig.jsnumber-precision

标签:存储,数字,js,丢失,JS,精度,小数
From: https://www.cnblogs.com/jiangyile/p/17850191.html

相关文章

  • piscina nodejs woker 线程池实现
    nodejs线程池工具还是很多的,piscina是一个比较活跃的项目包含的特性快速包含了固定以及可变任务场景支持灵活的线程池大小异步追踪支持取消支持支持comonj,esm,以及ts自定义任务队列linux系统上可选的cpu调度支持参考使用app.jsconstpath=require('......
  • 【jsp】mysql 封装类
    【jsp】mysql封装类大家拿着就能使用  packagebean;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassDBUtil{static{//MySQL5.7......
  • 实例讲解:NodeJS 操作 Kafka
    本人是C#出身的程序员,c#很简单就能实现,有需要的可以加我私聊。但是就目前流行的开发语言,尤其是面向web方向应用的,我感觉就是Nodejs最简单了。下面介绍:本文将会介绍在windows环境下启动Kafka,并通过nodejs作为客户端,生产和消费消息。步骤一,Kafka需要java运行时,先安装配置java环境。下......
  • mysql 处理 json 字段
    1.查看包含json字段的表信息mysql>desctab_json;+-------+------------+------+-----+---------+----------------+|Field|Type|Null|Key|Default|Extra|+-------+------------+------+-----+---------+----------------+|id|bigint(20)......
  • 前端学习-JavaScript学习-js基础05
    学习教程:黑马程序员视频链接对象了解<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docum......
  • php压缩json数据
    最近在优化一个页面:ajax请求异步数据,特定情况下,json数据达到100MB左右,仅数据传输时间就需要10-20s左右,简直太慢了。检索资料看怎么压缩json数据有效的方法:ob_start('ob_gzhandler');//压缩数据header('Content-Type:application/json');$data=[];for($i=0;$i<10......
  • MVCjsp,jstl整体项目实现依赖
    <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"><modelVers......
  • JavaWeb--JSP脚本
     JSP的缺点     ......
  • jsmpeg视频播放器使用方法和常见问题解决方案
    JSMpeg是一个使用JavaScript编写的视频播放器,它可以在浏览器中播放MPEG1视频和MP2音频流。JSMpeg的特点是它能够通过WebSockets实时传输视频流,并且可以在不支持HTML5视频播放器的浏览器上运行。以下是JSMpeg的基本使用方法和一些常见问题的解决方案:主要用来解决移移动端视频播放问......
  • js实现自动滚动以及分页数据请求,解决不同手机scrollTop++兼容问题
    创作不易,主要是为了分享,希望能帮到碰到类似问题的朋友,有帮助的话就给点个赞吧。 需求:公司需要实现一份合同的自动滚动预览,以及分页请求下一页数据继续滚动,直到所有合同加载完成就取消滚动。问题:不同手机使用scrollTop++,会出现+1出现小数点,整数的情况,导致请求下一页的数据无法......