当前位置: 首页 > 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。…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...