首页 > 其他分享 >函数解决js数值相加精度丢失问题

函数解决js数值相加精度丢失问题

时间:2023-04-13 17:26:05浏览次数:38  
标签:0.1 相加 0.2 js 丢失 toFixed 精度

浏览器控制台输入

console.log(0.1+0.2)

结果为0.30000000000000004

 

 

 

 

 

 当我们尝试将0.1和0.2相加时,结果应该是0.3,但是在JavaScript中,结果却是0.30000000000000004。这是因为0.1和0.2在二进制中无法被精确表示,所以在进行相加时会产生舍入误差,从而导致精度丢失。

为了简单处理这个问题,可以使用JavaScript内置的toFixed()方法将数值转换为指定位数的小数,从而避免精度丢失,可以将toFixed()方法返回的结果转换为数字,然后再进行相加。示例代码如下:

function the_plus(totalA, totalB) {
    return (0.1*totalA.toFixed(4) + 0.1*totalB.toFixed(4))*10;
}

 

标签:0.1,相加,0.2,js,丢失,toFixed,精度
From: https://www.cnblogs.com/cnwp007/p/17315561.html

相关文章

  • js正则表达式
    \d查找数字\D查找非数字字符\s查找空白字符\S查找非空白字符\w查找数字、字母及下划线\W查找非单词字符\n查找换行符\0查找NULL字符\r查找回车符n+查找一个或者多个如:/a+/匹配"candy"中的"a","caaaaaaandy"中所有的"a"当......
  • 【异步加载JS脚本(script标签)至html文档中】的辅助函数
    Code:/***'asyncLoadScript'方法的配置项'options'的类型定义*@typedef{Object}IOptions*@prop{string}id-script标签的ID*@prop{Function}onSucceed-加载成功后的回调*@prop{(Function|undefined)}onFailed-加载失败后的回调*@prop{boolean}s......
  • 纯前端仿GPT流式打字效果的js库,类似通义千问或者其他AI界面的打字效果
    因为GPT以及国内各大模型的发布,很多官网都设计的是,仿造流式打字效果,下面这个js库就能轻松实现。typed.js  具体实现代码参考下面:<spanid="subTitle"></span><scriptsrc="https://unpkg.com/[email protected]/dist/typed.umd.js"></script><script>vartyped=......
  • C# Json序列化,设置驼峰命名(字段首字母小写)
    相关代码:varserializerSettings=newJsonSerializerSettings{//设置为驼峰命名ContractResolver=newCamelCasePropertyNamesContractResolver()};varresult=JsonConvert.Ser......
  • 在js中==与===的区别
    在js中两个=与三个=的区别在js中经常会有这种写法1=="1"实际上二者是不同的,但这种放在js中得到的结果是true,为什么会这样呢,是因为在对比之前,js将"1"转换为了number类型,所以得到的结果是true。而下面代码得到的结果为false1==="1"之所以会出现false,是因为比较之前没有转......
  • jsencrypt与sm-crypto对url加解密处理
    1.jsencrypt公钥私钥随便找个网站生成(https://www.bejson.com/enc/rsa/)1.安装包:npmijsencrypt--save2.封装函数import{JSEncrypt}from'jsencrypt';//加密msg为需要加密的字符串,返回加密后的字符串exportfunctionsetEncrypt(msg){constjsencrypt=newJS......
  • JAVA返回前端时候bean转json时首字母、第二个字母大写会自动变成小写的问题
      后台bean是privateStringuName;但是前端生成的json是uname会自动变成小写 如果我们只是个别的几个的话,只需要加个注解@JsonProperty("uName")privateStringuName; 这样就可以了......
  • 手机直播源码,JS实现页面下拉加载数据操作
    手机直播源码,JS实现页面下拉加载数据操作主要是在id="ph"的div内加载数据: <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml&qu......
  • js注入cookie不生效的情况
    场景直接使用js注入cookie发现不生效,其实只设置了key和values值,没有注意其他字段。后来发现还有个domain的字段需要配置,不然注入是不会生效的document.cookie="token=123;domain=.baidu.com"#使用;分号隔开......
  • VUE.JS和NODE.JS构建一个简易的前后端分离静态博客系统(三)
    Edit.vue<template><divid="edit"><ClassicHeader><templatev-slot:left><span>编辑随笔</span></template><templatev-slot:right><el-button@click="......