首页 > 编程语言 >nodejs运算中的失精问题

nodejs运算中的失精问题

时间:2023-12-14 11:46:14浏览次数:31  
标签:舍入 log nodejs 浮点数 失精 问题 运算

nodejs运算中的失精问题

 

问题呈现

     let a=0.1, b=0.2, c=0.3, d=0.4;
     console.log(a+b)  // 0.30000000000000004
     console.log(a-c) // -0.19999999999999998
     sonsole.log(a-d) // -0.30000000000000004

分析问题
JavaScript中的浮点问题是由于浮点数的存储和计算方式引起的。JavaScript使用IEEE 754标准来表示和处理浮点数,这是一种二进制浮点数表示法。
在计算机中,浮点数使用有限的二进制位数来表示,因此无法精确地表示一些十进制小数。
例如,0.1在二进制中是一个无限循环的数字,无法完全准确地表示。当进行浮点数计算时,这种不精确性可能会导致一些意外的结果。
例如,当两个浮点数相加时,如果它们的小数位数不同,结果可能会出现微小的舍入误差。这是因为计算机在内部使用有限的位数来表示浮点数,因此必须进行舍入以适应这种表示方式。
另一个常见的问题是比较两个浮点数是否相等。由于舍入误差的存在,直接使用等号进行比较可能会导致错误的结果。通常需要使用一些特殊的技巧来比较浮点数,例如设置一个非常小的误差范围
如何解决
可以采取以下几种方法解决:

 

 


 

标签:舍入,log,nodejs,浮点数,失精,问题,运算
From: https://www.cnblogs.com/sexintercourse/p/17900874.html

相关文章

  • 241. 为运算表达式设计优先级(分治 +记忆化)
    Problem:241.为运算表达式设计优先级给你一个由数字和运算符组成的字符串expression,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以按任意顺序返回答案。生成的测试用例满足其对应输出值符合32位整数范围,不同结果的数量不超过示例1:输入:expression=......
  • 运算符
    【一】算数运算符(1)加法x=9y=2result=x+yprint(result)#11(2)减法x=9y=2result=x-yprint(result)#输出:7(3)乘法x=9y=2result=x*yprint(result)#输出:18(4)除法x=9y=2result=x/yprint(result)#输出:4.5(5)取整除x=9......
  • 运算符
     运算符 1,数学运算符1.“+”只有符号两边都是数字的时候才会进行加法运算只要符号任意一边是字符串类型,就会进行字符串拼接2.“-”会执行减法运算会自动把两边都转换成数字进行运算3."*"会执行乘法运算会自动把两边都转换成数字进行运算4.“/”会执行除法运......
  • C++学习笔记八:极限和数学运算<limits><cmath>
    1)<limits>库:1.1源文档:https://en.cppreference.com/w/cpp/types/numeric_limits#include<limits> 1.2库函数:函数解释:对于一个浮点数,lowest表示最小的可表示的负数,min表示最小的可表示的接近0的数,max表示最大的可表示的正数对于一个有符号整数,min表示可以表示的最小的......
  • nodejs的http.request最大响应体
    nodejs的http.request躺坑记录1、http.request之response.on("data",(chunk:Buffer)=>{})的chunk大小​ 由于nodejs的response.on("data")每次从服务端读取的chunk大小最大是65535Byte,并且查很多网站都找不大这个说明点所以狠狠踩了这个坑。这个65535有什么影响呢。本来编写的......
  • 在C++中,预处理器提供了一些符号和运算符,这些符号在宏定义中有特殊的含义
    在C++中,预处理器提供了一些符号和运算符,这些符号在宏定义中有特殊的含义。以下是一些常见的符号:#:字符串化运算符,用于将宏参数转换为字符串。#defineSTRINGIZE(x)#xstd::cout<<STRINGIZE(Hello);//输出"Hello"##:连接运算符,用于连接两个标记,使它们成为一个标记。#de......
  • NodeJs学习笔记
    目录NodeJsBuffer(缓冲区)概念特点使用计算机基础进程与线程fs模块写入文件①.writeFile异步写入②.writeFileSync同步写入③.appendFile/appendFileSync追加写入④.createWriteStream流式写入需要写入文件的场景文件读取①.readFile异步读取②.readFileSync同步读......
  • C++学习笔记六:运算符(五种基本运算操作,优先级和结合性)
    这一章对操作符进行简单的总结:1.五种基本运算类型:加减乘除,取余add,substract,multiply,divide,modulusintnumber1{2};intnumber2{7};intresult=number1+number2;result=number2-number1;result=number1-number2;result=number1*number2;result=......
  • java中的三目运算符
    格式:变量=condition?value1:value2condition是一个布尔表达式,如果为true,则返回value1,否则返回value2比如:变量a的赋值,如果x>y,则a=1,否则,a=2用ifelse代码如下:1importjava.util.Random;2publicclassTest3{3publicstaticvoidmain(String[]args){4......
  • NodeJS项目build成为本地镜像上传阿里云ACR
    先注册阿里云账号选择“容器镜像服务”->“个人实例”。由于是测试目的,个人版也可以接受。创建命名空间创建镜像仓库选择本地仓库-本示例会从本机推送镜像创建成功后,会有提示相关命令创建一个nodejs项目package.json{"name":"docker_web_app","versio......