JavaScript百炼成仙自学笔记——15

var num = "0.01";

 var num_arr = num.split(".");

var num_arr2 = num_arr[1];

0.1+0.2=0.3000000000000004

1.001*1000=1000.9999999999999;

小数运算丢失精度问题的解决办法:

前两种都有缺陷(第一种丢失精度,第二种可能出现超出整数上限的值)

.indexOf()   在原来的字符串中搜索一个特定的字符串

.replace()  字符串的替换方法

用第二种方式实现的代码

<script type = "text/javascript">

//1.01+1.001

function add(num1+num2){
    //将数字转换成字符串
    num1=num1.toString();
    num2= num2.toString();

    //获取小数点的位置
    var index1 = num1.indexOf(".");
    var index2 = num2.indexOf(".");

    //如果小数点存在,那么就在获取各自的小数点位数
    var ws1 = 0;
    var ws2 = 0;
    if(index1 != -1){
        ws1 = num1.split(".")[1].length;
    }
    if(index2 != -1){
        ws2 = num2.split(".")[1].length;
    }

    //看看谁的小数数位大,谁的小数数位小
    var bigger = (ws1 > ws2)?ws1:ws2;
    var smaller= (ws1 < ws2)?ws1:ws2;

    //计算得到的需要补齐的0的个数
    var zerosCount = bigger-smaller;

    //好了,现在不管三七二十一,全部去除小数点
    num1 = num1.replace(".","");
    num2 = num2.replace(".","");

    //比较num1和num2谁大,比较的方法就是看谁是smaller,是smaller的一方就补0
    if(ws1 == smaller){
        for(var i =0; i <zerosCount; i++){
            num1 += "0";
        }
    }else{
         for(var i =0; i <zerosCount; i++){
            num2 += "0";
        }
    }


    //开始计算
    var sum = parseInt(num1) +parseInt(num2);
    
    //根据较大的小数位数计算倍数
    var beishu = 1;
    for(var 1=0;i<bigger;i++){
        beishu = beishu*10;
    }
    sum =  sum / beishu;
    return sum;
}
alert(add(1.001,2.002));
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/598913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(论文阅读-优化器)EFFICIENCY IN THE COLUMBIA DATABASE QUERY OPTIMIZER

目录 ABSTRACT Chapter 1. Introduction Chapter 2. Terminology 2.1 查询优化器 2.2 逻辑算子和查询树 2.3 物理算子和执行计划 2.4 Groups 2.3 搜索空间 2.6 规则 Chapter 3. Related Work 3.1 System R和Starburst优化器 3.2 Exodus和Volcano优化生成器 3.3 Cas…

PyCharm安装详细教程

PyCharm安装详细教程 PyCharm简介及其下载网站 PyCharm是由JetBrains打造的一款Python IDE(Integrated Development Environment&#xff0c;集成开发环境)&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。PyCharm提供了代码编辑、调试、语法高亮…

最常用的AI工具

在日常工作生活中&#xff0c;我试用了几十种AI人工智能工具&#xff0c;下面我来推荐下我最常使用&#xff0c;也是最方便快捷的AI工具。 1百度文心一言 文心一言是一个综合性的大语言模型&#xff0c;整合了很多优秀的提示词&#xff0c;尤其是文心4.0大模型&#xff0c;在中…

做私域,朋友圈到底该怎么发?

说到做私域&#xff0c;很多人都会问&#xff1a;朋友圈该怎么发&#xff1f;相信大家的朋友圈早已经被各种广告攻占了&#xff0c;很多也都被大家屏蔽了。但如果要做私域&#xff0c;单纯发广告是行不通的&#xff0c;可是现在依然有很多人&#xff0c;认为做私域就是狂发朋友…

网络基础(1)网络编程套接字TCP,守护进程化

TCP协议 下面我们来学习一下TCP套接字的使用。 也就是使用一下基本的接口。首先TCP套接字的使用和UDP套接字的使用是大同小异的&#xff0c;但是多了一些步骤。 这里回顾一下&#xff1a;UDP是不可靠的&#xff0c;无连接的协议。而TCP则是可靠的&#xff0c;面向连接的协议…

护眼台灯品牌排行前十名有哪些?最新护眼台灯品牌排行前十名分享

在近几年&#xff0c;一个引人关注的健康现象是青少年近视问题的日益加剧。统计数字显示&#xff0c;近视的发病率不断攀升&#xff0c;令人忧心地发现&#xff0c;许多才刚步入小学一年级的孩子们&#xff0c;便已佩戴起了厚重的眼镜。其中最主要的原因就在于学习过程对数码设…

高实时、高可靠的微内核操作系统——鸿道Intewell

近年来&#xff0c;我国不断推进工业转型升级&#xff0c;力求实现从传统工业大国向现代工业强国的跨越。想要在新一轮科技革命中“超车”&#xff0c;需要从多个维度进行深度布局和全面发力。 ——科技创新是核心驱动力 积极推动工业结构的优化和升级&#xff0c;通过发展新…

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(IDE方式)】

Hi3516标准系统入门&#xff08;IDE方式&#xff09; 注意&#xff1a; 从3.2版本起&#xff0c;标准系统不再针对Hi3516DV300进行适配验证&#xff0c;建议您使用RK3568进行标准系统的设备开发。 如您仍然需要使用Hi3516DV300进行标准系统相关开发操作&#xff0c;则可能会出现…

Windows设置Redis为开机自启动

前言 Redis作为当前最常用的当前缓存技术&#xff0c;基本上Web应用中都有使用。所以&#xff0c;每次我们在本地启动项目前&#xff0c;都必须将Redis服务端启动。但是&#xff0c;每次都要去启动Redis就很麻烦&#xff0c;有没有办法做到开机自动启动Redis呢&#xff1f;这当…

leetCode69. x 的平方根

leetCode69. x 的平方根 题目思路 常见的二分法模板&#xff08;背过就行&#xff0c;模板而已&#xff09; // 区间[L,R]被划分为[L,mid]和[mid 1, R]时使用这个模板 int bsearch_1(int l, int r){while(l < r){int mid l r >> 1;if(check(mid)) r mid; //che…

CoPilot 产品体验:提升 OpenNJet 的控制管理和服务提供能力

文章目录 前言系统架构介绍CoPilot 配置CoPilot 插件规范 体验 CoPilot 实例CoPilot: Broker 实例CoPilot: Ctrl 实例 开发其他语言编写的 CoPilot目标主要思路具体实现执行 go 程序代码 功能扩展总结 前言 CoPilot 是 OpenNJet 的一个重要组成部分&#xff0c;它在 Master-Wo…

我独自升级崛起怎么下载 我独自升级崛起下载教程来了

《我独自升级&#xff1a;崛起》作为一款炙手可热的游戏&#xff0c;其非凡的品质迅速聚拢了大量玩家的目光&#xff0c;就如同磁铁吸引铁屑一般&#xff0c;展现了优质游戏所固有的强大吸引力。在这款游戏中&#xff0c;每位玩家都能化身成为拥有超凡能力的英雄&#xff0c;体…

物联网技术、测试要点和测试标准

物联网定义 物联网&#xff1a;利用嵌入式电子设备、微芯片等连接车辆、家电、医疗设备&#xff0c;以收集和交换不同类型的数据&#xff0c;被称为物联网。借助物联网&#xff0c;用户能够远程控制设备&#xff0c;可以实现不同设备的互联。在现实生活中物联网开始有越来越多…

使用开放式用户通信连接两台西门子S71200plc

步骤1.在项目中创建两台PLC。 步骤2.分别设置两个PLC的参数。 plc1 plc2 步骤3.对两个plc进行组态 步骤4.在plc1和plc2中各自创建DB块&#xff0c;用于通信。 须在块的属性中取消优化块的访问选项。 plc1 plc2 步骤5.往plc1的main块中编写代码。 步骤6.往plc2的main块中编写…

Python爬虫--Urllib基础

1. urlretrieve Urllib 库也是类似 request 库&#xff0c;用来解析html的 首先讲 urlretrieve 子模块 这个模块的作用是将网页下载到本地 语法&#xff1a; urlretrieve(网址,本地地址) 例如&#xff1a; 这样就可以了&#xff0c;他会将百度网页下载到本地D盘下&#x…

【iOS】——浅析CALayer

文章目录 一、CALayer介绍二、UIview与CALayer1.区别2.联系 三、CALayer的使用1.初始化方法2.常用属性 四.CALayer坐标系1.position属性和anchorPoint属性2.position和anchorPoint的关系3.position、anchorPoint和frame的关系 五、CALayerDelegate六、CALayer绘图机制1.绘图流程…

AGI|基于LangChain实现的三种高级RAG检索方法

一、前言 RAG(Retrieval-Augmented Generation)检索增强生成&#xff0c;是现如今基于企业私域知识的问答应用所使用的主流技术之一。相较于重新训练基于私域知识的大模型来说&#xff0c;RAG没有额外的预训练成本&#xff0c;且回答效果与之相当。 但在实际应用场景中&#xf…

容器Docker:轻量级虚拟化技术解析

引言 随着云计算和虚拟化技术的飞速发展&#xff0c;容器技术以其轻量级、高效、可移植的特性&#xff0c;逐渐成为了软件开发和部署的新宠。在众多容器技术中&#xff0c;Docker以其简单易用、功能强大的特点&#xff0c;赢得了广泛的关注和应用。本文将全面介绍Docker的基本概…

数据挖掘算法原理与实践:决策树

第2关&#xff1a;决策树算法原理 任务描述 本关任务&#xff1a;根据本关所学知识&#xff0c;完成 calcInfoGain 函数。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 信息熵&#xff1b;条件熵&#xff1b;信息增益。 信息熵 信息是个很抽象的概念。…