js如何使得四舍五入的百分比之和为100%

在JavaScript中,如果你想要确保一组四舍五入后的百分比之和严格等于100%,那么你不能直接对每个百分比进行四舍五入,因为四舍五入会引入误差。但是,你可以采用一种策略,即先对所有的百分比进行常规的四舍五入,然后调整最后一个百分比的值以确保总和为100%。

以下是一个简单的示例,说明如何实现这一点:

代码示例:

function roundPercentages(percentages) {  // 假设percentages是一个包含多个小数(表示百分比)的数组  // 例如: [0.2345, 0.3456, 0.4201]  // 1. 先对除了最后一个元素之外的所有元素进行四舍五入  for (let i = 0; i < percentages.length - 1; i++) {  percentages[i] = Math.round(percentages[i] * 100) / 100;  }  // 2. 计算四舍五入后的总和  let sum = percentages.slice(0, -1).reduce((a, b) => a + b, 0);  // 3. 计算需要添加到最后一个百分比的值,以确保总和为100%  let remaining = 1 - sum;  // 4. 对最后一个百分比进行四舍五入(或调整),以确保总和为100%  // 注意:这里我们直接设置最后一个百分比为剩余的值,而不是四舍五入  // 如果你需要四舍五入,可以计算remaining * 100,然后四舍五入,再除以100  percentages[percentages.length - 1] = remaining;  // 返回四舍五入后的百分比数组  return percentages;  
}  // 示例  
let percentages = [0.2345, 0.3456, 0.4201];  
let roundedPercentages = roundPercentages(percentages);  
console.log(roundedPercentages); // 输出可能是 [0.23, 0.35, 0.42] 或者类似的值,但总和为1

注意:在上面的示例中,最后一个百分比是直接设置为剩余的值,而不是四舍五入。这是因为四舍五入可能会再次引入误差。如果你确实需要对最后一个百分比进行四舍五入,你可以计算remaining * 100,然后四舍五入这个值,最后再将结果除以100。但是,这样做可能会使总和稍微偏离100%。因此,根据你的具体需求,你可能需要权衡这种误差的接受程度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# WPF入门学习主线篇(二十九)—— 绑定到对象和集合

C# WPF入门学习主线篇&#xff08;二十九&#xff09;—— 绑定到对象和集合 在WPF中&#xff0c;数据绑定是开发动态和交互性用户界面的核心技术。通过数据绑定&#xff0c;我们可以轻松地将UI控件与后台的数据源连接起来&#xff0c;实现数据的自动更新和显示。在本篇文章中&…

深度学习跨平台环境问题

在深度学习过程中&#xff0c;不可避免的是在win上跑不通的代码在ubuntu中就可以跑通&#xff0c;这里建议使用autodl。 首先在ubuntu上导出环境&#xff08;如果你的环境是base的话使用base&#xff09; conda env export --name base --no-builds > environment.yaml 这…

wordpress 导航主题 有批量从源码导入功能

下载地址&#xff1a;wordpress导航主题 可以批量导入

ardupilot开发 --- Jetson Orin Nano 后篇

我拼命加速&#xff0c;但贫穷始终快我一步 0~1920. visp-d455&#xff1a;基于IBVS的Pixhawk无人机视觉伺服20.1 基础关于连接、通讯、UDP forward服务&#xff1a;一些相关的、有用的例程Linux C程序的gdb断点调试搭建仿真解决【testPixhawkDroneTakeoff.cpp例程能解锁但起飞…

物联网LORA技术-SX1276/SX1277/SX1278-137MHz至1020MHz低功耗远距离收发器

概述&#xff1a; SX1276/SX1277/SX1278 收发器主要采用LORATM 远程调制解调器&#xff0c;用于超长距离扩频通信&#xff0c;抗干扰性强&#xff0c;能够最大限度降低电流消耗。借助升特的LoRaTM 专利调制技术&#xff0c;SX1276/SX1277/SX1278 采用低成本的晶体和物料即可获得…

SHELL脚本学习(十)初识 sed编辑器

一、sed 编辑器 sed 编辑器被称作流编辑器&#xff0c;根据命令来处理数据流中的数据。 这些数据要么从命令行输入&#xff0c;要么保存在命令文本文件中。 sed编辑器可以执行下列操作&#xff1a; 从输入中读取一行数据根据所提供的命令匹配数据按照命令修改数据流中的数据将…

WIFI6E中的MESH组网功能

什么是WIFI6E和MESH组网&#xff1f; WIFI 6E 是扩展到6GHz 频段的WIFI 6无线通信技术&#xff0c;而“WIFI 6E”中的“6”是指WIFI技术的“第6代”&#xff0c;“E”则是指使用新频段的标准的最新扩展。WIFI 6E通过增加6GHz频段&#xff0c;提供更高的带宽、更低的延迟和更大…

VMware虚拟机下载安装Windows Server 2016

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

从新手小白到红酒大咖:解锁红酒品鉴的终极秘籍,升级之路全攻略

在五彩斑斓的饮品世界中&#xff0c;红酒以其深邃的色泽、丰富的口感和悠久的历史&#xff0c;吸引了无数人的目光。对于红酒的初学者来说&#xff0c;从小白到品鉴师的道路或许充满了未知与挑战&#xff0c;但只要掌握了正确的知识和方法&#xff0c;就能够轻松踏入这个美妙的…

用群辉NAS打造影视墙(Jellyfin篇)

目录 1、安装Jellyfin媒体服务器 2、配置 (1)语言 (2)管理员账户 (3)添加媒体库 (4)指定元数据语言 (5)远程访问设置 (6)修改文件夹权限 (7)刷新电影 (8)启用硬件加速 3、PC浏览器访问 4、手机客户端 5、智能TV客户端 6、解决演员不能显示中文的问…

Android SurfaceFlinger——注册监听调用流程(七)

这一篇我们介绍一下 IComposer 中的另一个比较重要的方法&#xff0c;通过注册监听 Hal 层实现监听驱动的关键动作。 一、注册监听 在前面文章 SurfaceFlinger 的 init() 方法中&#xff0c;我们注册了一个 Callback 到 Hal 层中。最终通过 HIDL 调用到 Hal 层。 1、SurfaceF…

Java从小白到入职 视频教程 下载 因为太大存百度云盘4.zip

Java从小白到入职 视频教程 下载 1---战前准备_00-课程介绍&个人简介.mp4 2---战前准备_00-02-学习方法.mp4 3---战前准备_00-03-你的角色.mp4 4---战前准备_00-04-学习工具.mp4 5---战前准备_00-05-技术岗位概述-Web前端.mp4 6---战前准备_00-06-技术岗位概述-Java语…

Jenkins+gitee流水线部署springboot项目

目录 前言 一、软件版本/仓库 二、准备工作 2.1 安装jdk 11 2.2 安装maven3.9.7 2.3 安装docker 2.4 docker部署jenkins容器 三、jenkins入门使用 3.1 新手入门 3.2 jenkins设置环境变量JDK、MAVEN、全局变量 3.2.1 jenkins页面 3.2.2 jenkins容器内部终端 3.2.3 全…

购物返利系统中的数据处理与优化策略

购物返利系统中的数据处理与优化策略 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 随着电商行业的不断发展&#xff0c;购物返利系统作为一种常见的营销手段…

python-赏月

[题目描述] 在某个星球上看到的月亮大小有一个规律&#xff0c;月亮为每30天一个周期&#xff0c;在这30天的周期里&#xff0c;月亮的大小分别为 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1。 虽然天气很冷&#xff0c;但这个星球上的某个居民今…

MyBatis 源码分析--SqlSessionFactory

前言&#xff1a; 前文我们简单的回顾了 MyBatis 的基本概念&#xff0c;有聊到核心组件&#xff0c;工作流程等&#xff0c;本篇我们开始深入剖析 MyBatis 的核心源码&#xff0c;欢迎大家持续关注。 Mybatis 知识传送门 初识 MyBatis 【MyBatis 核心概念】 MyBatis 源码解…

钒能新材料综合回收利用,钒溶液净化富集工艺之离子交换法

钒电池储能产业作为典型的绿色低碳优势产业&#xff0c;是新型储能领域重要发展方向。钒电池储能具备大规模、长周期等优势&#xff0c;是储能领域的重要组成部分&#xff0c;将成为拓展电能利用、应对可再生能源随机波动、支撑可再生能源高占比电力系统的最佳技术途径之一。 …

力扣1019.链表中的下一个更大节点

力扣1019.链表中的下一个更大节点 从左到右 每个数确定下一个更大节点后 弹出栈中存下标 即res.size() class Solution {public:vector<int> nextLargerNodes(ListNode* head) {vector<int> res;stack<int> st;for(auto ihead;i;ii->next){while(!st.e…

openEuler 24.03 LTS - 华为欧拉开源版(华为 RHEL 兼容发行版)

openEuler 24.03 LTS - 华为欧拉开源版&#xff08;华为 RHEL 兼容发行版&#xff09; 华为红帽企业 Linux 兼容发行版 请访问原文链接&#xff1a;https://sysin.org/blog/openeuler/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sy…

Haproxy部署Web群集

HAProxy是一款开源的、高性能的TCP/HTTP负载均衡器和代理服务器&#xff0c;广泛应用于提高网站和应用的可用性和性能。本篇博客将介绍如何使用HAProxy部署一个高可用的Web集群。 目录 环境准备 安装HAProxy 配置HAProxy 配置解析 配置Web服务器 环境准备 假设我们有以下服…