问题:在开发中有这样的问题,就是需要在其他地方展示百分比,但是自己计算的百分比通过四舍五入后,与饼图里面的百分比不一致的问题,要想解决这个问题,那么必须要使用echarts源码中的计算方式。当存在四舍五入的时候,Echarts的百分比算法和自己写的百分比算法不同,导致相加后不等于100%.

如下图:数据不一致的问题

百分比算法源码地址:https://github.com/apache/echarts/blob/HEAD/src/util/number.ts

Java方式解决:

public class DemoTest {/*** 数组** @param arr       数组* @param sum       总数* @param idx       索引* @param precision 精度*/public static double getPercentValue(int[] arr, double sum, int idx, int precision) {if ((arr.length - 1) < idx) {return 0;}//求和if (sum <= 0) {for (int j : arr) {sum += j;}}//10的2次幂是100,用于计算精度。double digits = Math.pow(10, precision);//扩大比例100double[] votesPerQuota = new double[arr.length];for (int i = 0; i < arr.length; i++) {double val = arr[i] / sum * digits * 100;votesPerQuota[i] = val;}//总数,扩大比例意味的总数要扩大double targetSeats = digits * 100;//再向下取值,组成数组double[] seats = new double[arr.length];for (int i = 0; i < votesPerQuota.length; i++) {seats[i] = Math.floor(votesPerQuota[i]);}//再新计算合计,用于判断与总数量是否相同,相同则占比会100%double currentSum = 0;for (double seat : seats) {currentSum += seat;}//余数部分的数组:原先数组减去向下取值的数组,得到余数部分的数组double[] remainder = new double[arr.length];for (int i = 0; i < seats.length; i++) {remainder[i] = votesPerQuota[i] - seats[i];}while (currentSum < targetSeats) {double max = 0;int maxId = 0;int len = 0;for (int i = 0; i < remainder.length; ++i) {if (remainder[i] > max) {max = remainder[i];maxId = i;}}//对最大项余额加1++seats[maxId];//已经增加最大余数加1,则下次判断就可以不需要再判断这个余额数。remainder[maxId] = 0;//总的也要加1,为了判断是否总数是否相同,跳出循环。++currentSum;}// 这时候的seats就会总数占比会100%return seats[idx] / digits;}public static void main(String[] args) {int[] arr = new int[]{12, 1, 1, 1, 1, 1, 1};for (int i = 0; i < arr.length; i++) {System.out.println("值:" + getPercentValue(arr, 18, i, 2));}}
}

结果如下:

开发中从后端计算好即可解决问题。如下

文章参考:https://blog.csdn.net/qq_16438883/article/details/102953597

Echarts饼图百分比算法利用Java实现相关推荐

  1. echarts饼图百分比不为100%

    一.问题 由于需要兼容低版本ie,使用的echarts版本较低,为2.2.x.当前版本有饼图百分比不为100%的问题,如数据为如下: [ { name: '测试1', value: 1 }, { na ...

  2. echarts饼图百分比的直接展示

    引用echart的版本不一样,写法也存在差异 <div id="wraper" style="width: 1100px;height: 500px;backgro ...

  3. Echarts 扇形百分比算法(最大余额法)

    //valueList 总数组 //index 需要被计算的数组的下标 //precision 几位小数 getPercentValue: function(valueList, index, pre ...

  4. java最大余数法(百分比算法Echarts)

    最近工作中使用Echarts开发报表的时候遇到了这样的一个问题,需求是一个div中左边是一个环形图表,右边是一个表格,表格中展示图表中每个类别占用的百分比. 存在的问题: 1.当存在四舍五入的时候,E ...

  5. echarts 饼图效果,显示其对应数值及百分比

    需求:echarts 饼图效果,显示其对应数值及百分比 代码 <Chart1 :ecStyle="ecStyle" :ecOption="optionRight2& ...

  6. Echarts饼图显示数值和百分比

    Echarts 饼图显示名称,数值和百分比 核心: series : [ {name:'',type : 'pie',radius : '65%',center : [ '50%', '50%' ], ...

  7. echarts饼图显示占比(内部和外部显示百分比设置)

    1.效果图: 2.代码: series: [{name: '产量',type: 'pie',center: ['22%', '50%'],radius: ['0', '82%'],avoidLabel ...

  8. 解决echarts饼图显示百分比,和显示内容字体及大小,如何给eCharts饼图区域指定颜色

    解决echarts饼图显示百分比,和显示内容字体及大小 // 基于准备好的dom,初始化echarts实例         var pieEchart = echarts.init(document. ...

  9. floyd算法java_利用JAVA和Floyd算法实现上海地铁最短路线搜索系统

    [实例简介] Floyd算法基于JAVA实现上海地铁最短路线搜索系统,图形界面,支持新建删除站点以及新建线路. [实例截图] [核心代码] SUBWAY └── SUBWAY ├── bin │   ...

最新文章

  1. 优词词根词典mdx_推荐|一波好用的在线英语词典网站
  2. Android中ContentProvider组件数据共享
  3. APUE第二版源码编译问题解决
  4. win32——消息循环 原理 函数 GetMessage PeekMessage TranslateMessage SendMessage PostMessage...
  5. Linux之FineBI集群部署 1
  6. linux 虚拟内存分配,是否可以在linux中分配大量虚拟内存?
  7. 商业级激光打标源代码 因为已经开发出更强大的激光打标系统。改改就可以应用到自已的系统中去。
  8. stardic字典文件
  9. 实对称矩阵的若干性质与详细证明
  10. nRF52832-Beacons测距离
  11. 华三H3C交换机如何配置堆叠irf虚拟化之如何配置检测机制(配置BFD MAD检测)
  12. 解决Unity3d 图片黑边问题
  13. DKN: Deep Knowledge-Aware Network for News Recommendation阅读笔记
  14. 解题报告 (十三) 尺取法
  15. Sci论文常见的格式问题
  16. 如何自动生成论文目录
  17. 算法表示法之大O表示法
  18. Vitalik万字长文:困扰加密货币的硬核难题五年后都怎么样了?
  19. Ubuntu/Window下X2Go安装连接同步/上传文件夹(一次性成功)
  20. 计算机系统的组成的动画微课,快速制作动画式微课,就是这么简单

热门文章

  1. 牛客算法周周练8 「金」点石成金 暴力
  2. 从0到1实现单机记账APP原理与细节uniApp内含源码 (二)
  3. Strom实时热力图展示项目
  4. Sklearn机器学习——预测明天是否会下雨
  5. python中每个if条件后面都要使用冒号_python 3 条件控制语句
  6. 三菱fx2n做从站的modbus通讯_信捷PLC做MODBUS远程从站的方法
  7. jquery实现表格列锁定
  8. Spring Boot基于itext实现PDF生成功能
  9. 【人工智能】语音识别技术
  10. 第三天:让简历有点色彩