MarginLon MarginLon
首页
  • Web

    • Web基础
    • Web布局
    • CodeSnippet
  • Vue

    • Vue
  • React

    • React
  • Node.js

    • Node.js
  • 技术文档
  • UI组件库
  • 动画库
  • 图形库
  • 桌面端
  • 学习笔记
  • 生活笔记
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

MarginLon

http://info.cern.ch
首页
  • Web

    • Web基础
    • Web布局
    • CodeSnippet
  • Vue

    • Vue
  • React

    • React
  • Node.js

    • Node.js
  • 技术文档
  • UI组件库
  • 动画库
  • 图形库
  • 桌面端
  • 学习笔记
  • 生活笔记
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数据类型 类型检测 类型转换
  • 精度问题
    • 1. 精度问题
  • 堆栈内存 函数底层运行机制 块级作用域
  • GC机制 闭包作用域 let/const/var
  • 闭包应用
  • DOM
  • BOM
  • This指向
  • 浏览器渲染机制 CRP优化 事件循环机制
  • 函数防抖节流
  • 模块化 柯里化
  • 构造函数 原型
  • CLASS
  • 工厂设计模式 深浅拷贝 深浅合并
  • Iterator/Generator
  • Promise/ Async/ Await
  • HTTP/跨域
  • API
  • AJAX
  • 事件
  • 《JavaScript高级程序设计(第4版)》
MarginLon
2022-04-11
目录

精度问题

  • 1. 精度问题

# 1. 精度问题

解决方法:

  • 扩大系数
  • 第三方库 Math.js decimal.js big.js

JS中有关于小数的计算会出现精准度丢失的问题

  • JS中所有值以2进制存在底层,会出现无限循环的情况
  • 底层存储最多64位

浮点数计算的解决方案:

  1. toFixed保留小数点N位,会自动四舍五入
  2. 扩大系数
const coefficient = function coefficient(num){
  num = num + '';
  let [, char = ''] = num.split(','),
      len = char.length;
  return Math.pow(10,len);
};
const plus = function plus(num1,num2){
  num1 = +num1;
  num2 = +num2;
  if(isNaN(num1)||isNaN(num2)) return NaN;
  let max = Math.max(coefficient(num1),coefficient(num2));
  return (num1 * max + num2 * max)/max;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
编辑 (opens new window)
上次更新: 2023/04/01, 15:26:22
数据类型 类型检测 类型转换
堆栈内存 函数底层运行机制 块级作用域

← 数据类型 类型检测 类型转换 堆栈内存 函数底层运行机制 块级作用域→

最近更新
01
KnockoutJS
11-12
02
综述
10-17
03
前言
10-12
更多文章>
Theme by Vdoing | Copyright © 2019-2024 MarginLon | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式