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

工具函数-算法

1. 实现四舍五入,保留两位小数

const v = 0.0635455;
// 方式1,保留2位小数,返回的是number格式
const formatted = Math.round(v * 100) / 100;
// 方式2,保留2位小数,返回的是字符串格式
const formatted = v.toFixed(2);

在使用浮点数运算时,有时会出现无限循环的情况,这是由于浮点数在转换成二进制的时候就会出现。将浮点数转换为二进制形式的过程如下:

  1. 将整数部分转换为二进制:

    • 将整数部分除以 2,记录余数,直到商变为 0。余数倒序排列即为整数部分的二进制形式。
  2. 将小数部分转换为二进制:

    • 将小数部分乘以 2,取整数部分作为二进制位,小数部分继续乘以 2,直到小数部分为 0 或达到所需的精度。

举例:一个典型的例子就是 0.1 这个值,将 0.1 转换为二进制的过程如下:

  1. 小数部分 0.1 乘以 2:
    • 0.1 × 2 = 0.2 (取整数部分 0)
  2. 小数部分 0.2 乘以 2:
    • 0.2 × 2 = 0.4 (取整数部分 0)
  3. 小数部分 0.4 乘以 2:
    • 0.4 × 2 = 0.8 (取整数部分 0)
  4. 小数部分 0.8 乘以 2:
    • 0.8 × 2 = 1.6 (取整数部分 1)

重复这个过程,我们会发现小数部分会产生一个无限循环的二进制序列。
因此尽量不要直接将对浮点数的运算结果直接展示出来。

2. 随机数算法

生成一个固定范围的随机数:min + (max-min)*Math.random()

生成一个随机排列 [1, 2, 3, 4].sort((a, b) => return Math.random() - 0.5)

快速取整:<< 0和 >> 0都是取整,是js里性能最快的取整,不管正负数都是去掉小数部分;和Math.floorMath.ceilMath.round不一样。
例如: 1.23 >> 0 -> 1 -2.59 << 0 -> -2

3. 轮播图取值

取值逻辑 fix: i => ((i % length) + length) % length

这个函数的作用是修正给定的索引 i,使其始终处于 0length-1 的范围内。这对于轮播组件非常有用,因为当用户点击上一个或下一个按钮时,索引可能会超出 0length-1 的范围。

这个函数的实现原理如下:

  1. i % length: 这个操作可以将 i 限制在 0length-1 的范围内。但是,如果 i 为负数,这个操作会返回一个负数。

  2. (i % length) + length: 这个操作可以确保结果始终为非负数。如果 i 为负数,i % length 会返回一个负数,但加上 length 后会变成一个正数。

  3. ((i % length) + length) % length: 这个最后的取模操作可以确保结果在 0length-1 的范围内。即使 (i % length) + length 的结果大于 length,取模操作也会将其缩减到 0length-1 的范围内。

总之,这个 fix 函数可以确保无论 i 的值是多少,它都会被修正为 0length-1 之间的一个合法索引。这对于轮播组件的实现非常重要,可以确保组件的行为是可预测的,无论用户的操作如何。

相关文章:

工具函数-算法

1. 实现四舍五入&#xff0c;保留两位小数 const v 0.0635455; // 方式1&#xff0c;保留2位小数&#xff0c;返回的是number格式 const formatted Math.round(v * 100) / 100; // 方式2&#xff0c;保留2位小数&#xff0c;返回的是字符串格式 const formatted v.toFixed(…...

C# yolov8 OpenVINO 同步、异步接口视频推理

C# yolov8 OpenVINO 同步、异步接口视频推理 目录 效果 项目 代码 下载 效果 同步推理效果 异步推理效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Windows.Form…...

【STM32入门学习】定时器与PWM的LED控制

目录 一、定时器与PWM介绍 1.1定时器 1.1.1定时器分类简介 1.1.2STM32定时器分类比较表 1.1.3定时器启动操作&#xff1a; 1.2 PWM 1.2.1 简介&#xff1a; 1.2.2PWM工作原理 1.2.3使用步骤&#xff1a; 二、定时器计数控制LED灯亮灭 2.1HAL库 2.1.1使用HAL库创建…...

PyTorch实战:模型训练中的特征图可视化技巧

1.特征图可视化&#xff0c;这种方法是最简单&#xff0c;输入一张照片&#xff0c;然后把网络中间某层的输出的特征图按通道作为图片进行可视化展示即可。 2.特征图可视化代码如下&#xff1a; def featuremap_visual(feature, out_dirNone, # 特征图保存路径文件save_feat…...

有人@你!神工坊知识问答第二期中奖名单新鲜出炉

六月作为伟大的物理学家—麦克斯韦的诞辰月 神工坊特别推出 “ 辨 ‘麦克斯韦妖’&#xff0c;赢百元好礼” 夏日知识问答主题活动 活动一经推出 反响热烈 第二期中奖名单公布&#xff01; 中奖的伙伴们速来兑奖&#xff01; 听说还有同学没有参与&#xff1f; 活动最后…...

数据结构篇:旋转操作在AVL树中的实现过程

本节课在线学习视频&#xff08;网盘地址&#xff0c;保存后即可免费观看&#xff09;&#xff1a; https://pan.quark.cn/s/06d5ed47e33b AVL树是平衡二叉搜索树的一种&#xff0c;它通过旋转操作来保持树的平衡。AVL树的特点是&#xff0c;任何节点的两个子树的高度最大差别…...

为什么Java默认使用UTF-16,Golang默认使用UTF-8呢?

Java 和 Go 语言在默认字符编码上做出了不同的选择&#xff0c;这是由它们的设计目标和使用场景决定的。下面是对 Java 默认使用 UTF-16 和 Go 默认使用 UTF-8 的原因进行的详细解释。 Java 默认使用 UTF-16 的原因 1. 历史背景和兼容性 Unicode 的发展: Java 诞生于 1995 年…...

JavaScript常见面试题(三)

文章目录 1.对原型、原型链的理解2.原型修改、重写3.原型链指向4.对闭包的理解5. 对作用域、作用域链的理解6.对执行上下文的理解7.对this对象的理解8. call() 和 apply() 的区别&#xff1f;9.异步编程的实现方式&#xff1f;10.setTimeout、Promise、Async/Await 的区别11.对…...

【Effective Modern C++】第1章 型别推导

【Effective Modern C】第1章 型别推导 文章目录 【Effective Modern C】第1章 型别推导条款1&#xff1a;理解模板型别推导基础概念模板型别推导的三种情况情景一 ParamType 是一个指针或者引用&#xff0c;但非通用引用情景二 ParamType是一个通过引用情景三 ParamType既不是…...

服装连锁实体店bC一体化运营方案

一、引言 随着互联网的快速发展和消费者购物习惯的变化&#xff0c;传统服装连锁实体店在面对新的市场环境下亟需转型升级。BC&#xff08;Business to Consumer&#xff09;一体化运营方案的实施将成为提升服装连锁实体店竞争力和顾客体验的关键举掖。商淘云详细介绍服装连锁…...

IDEA中SpringMVC的运行环境问题

文章目录 一、IEAD 清理缓存二、用阿里云和spring创建 SpringMVC 项目中 pom.xml 文件的区别 一、IEAD 清理缓存 springMVC 运行时存在一些之前运行过的缓存导致项目不能运行&#xff0c;可以试试清理缓存 二、用阿里云和spring创建 SpringMVC 项目中 pom.xml 文件的区别 以下…...

Python初体验

# Java基础知识学的差不多了&#xff0c;项目上又没什么事&#xff0c;学学py&#xff0c;方便以后对接 1、打包flask应用&#xff08;好痛苦&#xff0c;在什么平台打包就只在那个平台可用想在linux用只能参考方法2了&#xff09; pyinstaller --onefile app.py -n myapp 2…...

从零开始如何学习人工智能?

说说我自己的情况&#xff1a;我接触AI的时候&#xff0c;是在研一。那个时候AlphaGo战胜围棋世界冠军李世石是大新闻&#xff0c;人工智能第一次出现我面前&#xff0c;当时就想搞清楚背后的原理以及这些技术有什么作用。 就开始找资料&#xff0c;看视频。随着了解的深入&am…...

【仿真建模-anylogic】动态生成ConveyorCustomStation

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-18 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 0. 背景 直接使用Anylogic组件开发的模型无法动态改变运输网布局&#xff1b;目前需求是要将运输网布局配置化&#xff1b;运输网配置化…...

如何使用idea连接Oracle数据库?

idea版本&#xff1a;2021.3.3 Oracle版本&#xff1a;10.2.0.1.0&#xff08;在虚拟机Windows sever 2003 远程连接数据库&#xff09; 数据库管理系统&#xff1a;PLSQL Developer 在idea里面找到database&#xff0c;在idea侧面 选择左上角加号&#xff0c;新建&#xff…...

谈谈kafaka的并行处理,顺带讲讲rabbitmq

简介 Kafka 是一个分布式流处理平台,它支持高效的并行处理。Kafka 的并行处理能力主要体现在以下几个方面: 分区(Partition)并行 Kafka 将数据存储在称为"分区"的逻辑单元中。每个分区可以独立地并行地进行读写操作。生产者可以根据分区策略,将数据写入到指定的分…...

P3056 [USACO12NOV] Clumsy Cows S

[USACO12NOV] Clumsy Cows S 题目描述 Bessie the cow is trying to type a balanced string of parentheses into her new laptop, but she is sufficiently clumsy (due to her large hooves) that she keeps mis-typing characters. Please help her by computing the min…...

智赢选品,OZON数据分析选品利器丨萌啦OZON数据

在电商行业的激烈竞争中&#xff0c;如何快速准确地把握市场动态、洞察消费者需求、实现精准选品&#xff0c;是每个电商卖家都面临的挑战。而在这个数据驱动的时代&#xff0c;一款强大的数据分析工具无疑是电商卖家们的得力助手。今天&#xff0c;我们就来聊聊这样一款选品利…...

Canal自定义客户端

一、背景 在Canal推送数据变更信息至MQ&#xff08;消息队列&#xff09;时&#xff0c;我们遇到了特定问题&#xff0c;尤其是当消息体的大小超过了MQ所允许的最大限制。这种限制导致数据推送过程受阻&#xff0c;需要相应的调整或处理。 二、解决方法 采用Canal自定义客户…...

20240621将需要自启动的部分放到RK3588平台的Buildroot系统的rcS文件中

20240621将需要自启动的部分放到RK3588平台的Buildroot系统的rcS文件中 2024/6/21 17:15 开发板&#xff1a;飞凌OK3588-C SDK&#xff1a;Rockchip原厂的Buildroot 缘起&#xff1a;在凌OK3588-C的LINUX R4系统启动的时候&#xff0c;需要拉高GPIO4_B5、GPIO3_B7和GPIO3_D0。…...

掌握数据魔方:Xinstall引领ASA全链路数据归因新纪元

一、引言 在数字化时代&#xff0c;数据是App推广和运营的核心驱动力。然而&#xff0c;如何准确获取、分析并应用这些数据&#xff0c;却成为了许多开发者和营销人员面临的痛点。Xinstall作为一款专业的App全渠道统计服务商&#xff0c;致力于提供精准、高效的数据解决方案&a…...

IIS代理配置-反向代理

前后端分离项目&#xff0c;前端在开发中使用proxy代理解决跨域问题&#xff0c;打包之后无效。 未配置前无法访问 部署环境为windows IIS&#xff0c;要在iis设置反向代理 安装代理模块 需要在iis中实现代理&#xff0c;需要安装Application Request Routing Cache和URL重…...

Flutter调用本地web

前言: 在目前Flutter 环境中&#xff0c;使用在线 webview 是一种很常见的行为 而在 app 环境中&#xff0c;离线使用则更有必要 1.环境准备 将依赖导入 2.引入前端代码 前端代码有两种情况 一种是使用打包工具 build 而来的前端代码 另一种情况是直接使用 HTML 文件 …...

AI大模型部署Ubuntu服务器攻略

一、下载Ollama 在线安装&#xff1a; 在linux中输入命令curl -fsSL https://ollama.com/install.sh | sh 由于在linux下载ollama需要经过外网&#xff0c;网络会不稳定&#xff0c;很容易造成连接超时的问题。 离线安装&#xff1a; 步骤一&#xff1a; 下载Ollama离线版本…...

vlan、vxlan、vpc学习

文章目录 前言VLAN (Virtual Local Area Network)定义工作原理优点应用场景限制 VXLAN (Virtual eXtensible Local Area Network)工作原理优点应用场景与VLAN的区别 VPC (Virtual Private Cloud)定义特点优势应用场景与VLAN/VXLAN的关联 总结 前言 VLAN&#xff08;Virtual Lo…...

低代码开发:加速工业数智化转型发展

引言 在当今全球经济一体化和信息化的深度融合的大环境下&#xff0c;工业数智化转型已经成为推动制造业高质量发展的关键因素。这一转型不仅涉及生产过程的智能化、网络化&#xff0c;还涉及到企业管理、市场服务等全方位的数字化升级&#xff0c;其最终目标是为了实现更高效能…...

python“__main__“的解读

Tutorial Gross tutorial 有些模块包含了仅供脚本使用的代码&#xff0c;比如解析命令行参数或从标准输入获取数据。 如果这样的模块被从不同的模块中导入&#xff0c;例如为了单元测试&#xff0c;脚本代码也会无意中执行。 这就是 if name ‘main’ 代码块的用武之地。除非…...

Linux Debian12使用podman安装pikachu靶场环境

一、pikachu简介 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 二、安装podman环境 Linux Debian系统如果没有安装podman容器环境&#xff0c;可以参考这篇文章先安装podman环境&#xff0c; Linux Debian11使用国内源安装Podman环境 三…...

跑通并使用Yolo v5的源代码并进行训练—目标检测

跑通并使用Yolo v5的源代码并进行训练 摘要&#xff1a;yolo作为目标检测计算机视觉领域的核心网络模型&#xff0c;虽然到24年已经出到了v10的版本&#xff0c;但也很有必要对之前的核心版本v5版本进行进一步的学习。在学习yolo v5的时候因为缺少论文所以要从源代码入手来体验…...

需求虽小但是问题很多,浅谈JavaScript导出excel文件

最近我在进行一些前端小开发&#xff0c;遇到了一个小需求&#xff1a;我想要将数据导出到 Excel 文件&#xff0c;并希望能够封装成一个函数来实现。这个函数需要接收一个二维数组作为参数&#xff0c;数组的第一行是表头。在导出的过程中&#xff0c;要能够确保避免出现中文乱…...

企业网站建设 广州/想学手艺在哪里可以培训

公众号关注 「奇妙的 Linux 世界」设为「星标」&#xff0c;每天带你玩转 Linux &#xff01;Coolify 是一种可自我托管的综合解决方案&#xff0c;只需单击几下即可托管你的应用、数据库或其他开源服务。它是 Heroku 和 Netlify 的一个替代方案。通过 Coolify 可以部署很多应用…...

免费客户管理软件排行/北京网站优化经理

zimbra 登录端口In Zimbra server, how to set Zimbra web service’s hostname and port?在Zimbra 服务器中 &#xff0c;如何设置Zimbra Web服务的主机名和端口&#xff1f; Set Zimbra Web service’s host and port (to mail.domain.com:80 as an example) for a mail do…...

设计网站建设/seodao cn

张越和克里斯刚消失在众人的视线&#xff0c;山口智子立即挺着硕大的胸部去魅惑队长——威斯克了&#xff0c;她的魅惑技能可是A啊。 剩下的新人都聚在了一起&#xff0c;慕容红俨然成了张越之下的二号人物&#xff0c;她看了看三个剧情人物&#xff0c;说道&#xff1a;“张越…...

开发多语言网站/武汉seo软件

1. 渲染收货地址界面 目的: 可以渲染收货地址 操作流程: 1, 子路由(users/urls.py) url(r^addresses/$,views.AddressesView.as_view()),2, 类视图(users/views.py) #8, 收货地址 class AddressesView(View):...

做网站有免费的吗/企业网站优化关键词

单纯clean project是不行的&#xff0c;选择File-Invalidate Caches/Restart&#xff0c;清除缓存&#xff0c;重启AS Android NDK 是在SDK前面又加上了"原生"二字&#xff0c;即Native Development Kit&#xff0c;因此又被Google称为"NDK"。 众所周知&am…...

苏州专业网站建设设计公司/世界最新新闻

文章目录前言网络相关指令远程操作指令查看本地网络状态网络测试DNS查询HTTP相关前言 文章的内容来源拉钩教育上的课程学习&#xff0c;通过写博客的方式&#xff0c;更好的提高对该知识的掌握。 网络相关指令 Linux中提供不少网络相关的指令&#xff0c;从以下几个维度&…...