当前位置: 首页 > news >正文

鹅厂JS面试题——0.1+0.2=0.3吗?

首先公布答案:在JavaScript 中,0.1 + 0.2 ≠ 0.3

为什么?

JavaScript 中的数字使用 IEEE 754 标准的双精度浮点数(64 位)进行表示。这种表示方式在处理十进制小数时,不能精确地表示某些数字。比如0.10.2 这样的十进制小数,在转换成二进制浮点数时会产生无限循环的小数,导致它们在内存中只能近似表示。

  • 0.1 在二进制中表示为一个近似值:0.00011001100110011001100110011001100110011001100110011... (无限循环)
  • 0.2 在二进制中表示为另一个近似值:0.001100110011001100110011001100110011001100110011001101... (无限循环)

所以计算0.1 + 0.2时 ,JavaScript 会对这些近似值进行加法运算,结果并不是精确的 0.3,而是一个稍微偏离的值。

console.log(0.1 + 0.2); // 输出: 0.30000000000000004

如何处理这个问题?

  1. 使用容差:在比较两个浮点数时,通常会使用一个很小的容差值来判断它们是否“相等”。
    const range= 1e-10; // 或者更小
    console.log(Math.abs(0.1 + 0.2 - 0.3) < range); // 输出: true
    
  2. 转为整数进行计算:将浮点数转换为整数后再进行运算,计算后再转换回来。
    console.log((0.1 * 10 + 0.2 * 10) / 10 === 0.3); // 输出: true
    
  3. 使用专门的库:如果需要高精度的浮点运算,可以使用像 big.jsdecimal.js 这样的库来处理。

总结

0.1 + 0.2 在 JavaScript 中不等于 0.3 是由于浮点数表示的精度问题。理解这个问题对于处理涉及精确计算的场景非常重要,并且可以使用容差、整数化或者专门的库来应对这些情况。

相关文章:

鹅厂JS面试题——0.1+0.2=0.3吗?

首先公布答案:在JavaScript 中&#xff0c;0.1 0.2 ≠ 0.3 为什么&#xff1f; JavaScript 中的数字使用 IEEE 754 标准的双精度浮点数&#xff08;64 位&#xff09;进行表示。这种表示方式在处理十进制小数时&#xff0c;不能精确地表示某些数字。比如0.1 和 0.2 这样的十进…...

软件功能测试重点和流程有哪些?专业软件测评服务公司推荐

软件功能测试就是对产品的各功能进行验证&#xff0c;根据功能测试用例&#xff0c;逐项测试&#xff0c;检查产品是否达到用户要求的功能。功能测试也叫黑盒测试或数据驱动测试&#xff0c;只需考虑需要测试的各个功能&#xff0c;不需要考虑整个软件的内部结构及代码.一般从软…...

【数据结构】AVL树(C++实现)

文章目录 前言AVL树节点的定义AVL树的插入AVL树的旋转AVL树的验证AVL树的删除AVL树的性能与源码 前言 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&…...

AMD新推EPYC与MI325X,挑战英伟达AI市场地位

在人工智能&#xff08;AI&#xff09;加速器领域&#xff0c;AMD近日于美国旧金山举办的“推进人工智能”&#xff08;Advancing AI Event&#xff09;活动中&#xff0c;宣布了一系列新产品的发布&#xff0c;直接对标英伟达&#xff0c;意图在AI芯片市场占据更大份额。 AMD新…...

电脑桌面文件不见了怎么恢复?8个方法帮你解决问题

电脑桌面文件突然不见了凭空消失了怎么恢复&#xff1f;电脑桌面文件日常使用电脑时&#xff0c;很多用户喜欢将重要文件、快捷方式存放在桌面上&#xff0c;以方便快速访问。然而&#xff0c;有时我们会突然发现桌面上的文件不见了。桌面文件消失可能有多种原因&#xff0c;例…...

如果想转行AI领域却不知如何开始?可以试试这五步,超详细_ai行业怎么入行

我看了计算机科学家大卫格维茨写的一篇博客&#xff0c;里面介绍了如果想从事AI行业&#xff0c;却不知道如何开始的话&#xff0c;可以走下面五步&#xff0c;从而达到转行的目的。因为这是个国外作家写的&#xff0c;跟我们国内的情况有一些出入&#xff0c;但是大思路是没有…...

个人博客搭建 | Hexo框架

文章目录 1.Hexo安装2.创建博客3.将博客通过GitHub来部署4.更换主题 1.Hexo安装 Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown&#xff08;或其他标记语言&#xff09;解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。搭建Hexo首先要…...

[Gtk] layout.ui

播放器layout&#xff1a; # <?xml version"1.0" encoding"UTF-8"?> <!-- Generated with glade 3.38.2 --> <interface> <requires lib"gtk" version"3.20"/> <object class"GtkWindow"…...

Spring MVC:精通JSON数据返回的几种高效方式

前言 在实际开发中&#xff0c;我们在前后端传送数据通常使用Json格式&#xff0c;而在Spring MVC中返回Json格式的方式有多种&#xff0c;接下来我将介绍其中一些。 准备工作 为了演示Json格式的数据&#xff0c;我们准备一个实体类&#xff0c;例如User&#xff0c;这些可以测…...

[LeetCode 题3] 没有重复字符的最长的子字符串

问题描述 输入&#xff1a;一个字符串 s。输出&#xff1a;最长的无重复字符的子串的长度。 示例 输入: s "abcabcbb" 输出: 3 解释: 最长的无重复字符的子串是 "abc"&#xff0c;长度为 3。 输入: s "bbbbb" 输出: 1 解释: 最长的无重复字…...

YoloDotNet 在工业检测中的应用详解

文章目录 一、数据收集与标注二、模型选择与训练三、检测流程设计四、结果评估与优化五、与工业生产线集成一、数据收集与标注 在工业检测中,首先需要收集大量的相关工业产品图像数据。这些数据应涵盖不同的产品类型、缺陷种类以及各种可能的生产状态。例如,对于电子产品的检…...

DataFrame增删改数据

目录 准备数据 DataFrame添加列 直接添加列数据 使用insert添加列数据 DataFrame删除行列 准备数据 删除行 删除列 DataFrame数据去重 准备数据 import pandas as pd df pd.read_csv("../data/b_LJdata.csv") df DataFrame添加列 直接添加列数据 1&…...

一站式解决App下载量统计,Xinstall引领新潮流

在移动应用市场中&#xff0c;App下载量是衡量应用受欢迎程度和市场表现的重要指标。然而&#xff0c;对于许多开发者而言&#xff0c;如何精准统计App下载量却是一个不小的挑战。幸运的是&#xff0c;如今有了一款专业的App全渠道统计服务商——Xinstall&#xff0c;它能够帮助…...

ijkMediaPlayer+ TextureView 等比全屏播放视频(避免拉伸)

TextureView默认以fitxy的方式加载surface数据&#xff0c;如果需要等比全屏播放视频&#xff0c;避免拉伸&#xff0c;可以采用Matrix对TextureView进行变换 废话不多说&#xff0c;直接上代码 public class BaseIjkPlayer implements TextureView.SurfaceTextureListener{/…...

【RS】GEE(Python):数据处理

在前面的章节中&#xff0c;我们已经学习了如何加载影像数据。现在&#xff0c;让我们进一步探讨如何在 Google Earth Engine (GEE) 中进行数据处理。数据处理通常包括图像预处理、裁剪、过滤、重采样等操作。 栅格影像的处理 栅格影像处理包括了裁剪、波段选择、重采样、合成…...

非线性磁链观测器推导

<div id"content_views" class"htmledit_views"><p id"main-toc"><strong>目录</strong></p> 电机方程 电压方程 磁链方程 定义状态变量和输出变量 非线性观测器方程 电角度的计算--锁相环 锁相环调参 电机…...

什么时机用mysql,什么时机用redis,什么时机用本地内存

mysql 的 buffer pool 也是存在内存中&#xff0c;redis 的数据也是存在内存中&#xff0c;为什么不直接存在 mysql 里&#xff1f; 1、数据结构和访问方式 Redis 是一个内存数据库&#xff0c;专门为高效的读写性能而设计。它支持多种数据结构&#xff08;如字符串、列表、哈…...

Redis八股

缓存 缓存穿透 当查询一个不存在的数据&#xff0c;mysql查询不到数据&#xff0c;无法写入缓存&#xff0c;导致每次都请求数据库 解决方法 缓存空数据&#xff0c;当查询结果未空&#xff0c;将结果进行缓存。 简单但是会消耗内存&#xff0c;而且会出现不一致情况。布隆…...

vue3--通用 popover 气泡卡片组件实现

背景 在日常开发中,我们一般都是利用一些诸如:element-ui、element-plus、ant-design等组件库去做我们的页面或者系统 这些对于一些后台管理系统来说是最好的选择,因为后台管理系统其实都是大同小异的,包括功能、布局结构等 但是对于前台项目,比如官网、门户网站这些 …...

Bluetooth Channel Sounding中关于CS Step及Phase Based Ranging相应Mode介绍

目录 BLE CS中Step定义 BLE CS中交互的数据包/波形格式 BLE CS中Step的不同Mode BLE CS中Step的执行过程 Mode0介绍 Mode0 步骤的作用 Mode0步骤的执行过程 Mode0步骤的执行时间 Mode0步骤的时间精度要求 Mode2介绍 Mode2步骤的作用和执行过程 Mode2步骤的执行时间 B…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...