单位转换、保留小数、计算百分比【工具类】

news/2024/10/6 4:37:24/文章来源:https://www.cnblogs.com/GilbertDu/p/18245961

实际开发中,经常会遇到单位转换、保留小数、计算百分比的场景,下面是我自己写的并实际使用的工具类,希望能帮到大家或者给大家参考

该工具类包括:

  • 单位转换成万或亿
  • 保留两位小数
  • 计算百分比,保留两位小数
  • 计算百分比,保留两位小数,若有效数字为0,则往后取到第一个不为零的
  • 计算百分比,保留整数
public class NumberUtil {/*** 转换为亿* @param amount* @return*/public static BigDecimal formatToYI(BigDecimal amount) {if (amount == null) {return new BigDecimal(0);}return amount.divide(new BigDecimal(100000000), 2, BigDecimal.ROUND_HALF_UP);}/*** 转换为万* @param amount* @return*/public static BigDecimal formatToWAN(BigDecimal amount) {if (amount == null) {return new BigDecimal(0);}return amount.divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP);}/*** 转成万或亿* @param amount* @return*/public static String formatToWanOrYi(BigDecimal amount) {if (amount == null) {return "0";}if (amount.compareTo(new BigDecimal(10000000)) < 0) {//如果小于1亿return amount.divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString() + "万";}return amount.divide(new BigDecimal(100000000), 2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString() + "亿";}/*** 保留两位小数* @param amount* @return*/public static BigDecimal formatTwo(BigDecimal amount) {if (amount == null) {return new BigDecimal(0);}return amount.setScale(2, BigDecimal.ROUND_HALF_UP);}/*** 计算百分比 保留两位小数* @param num1* @param num2* @return*/public static String getPercent(long num1, long num2) {String rate = "0.00%";String format = "0.00";if (num1 != 0 && num2 != 0) {DecimalFormat dec = new DecimalFormat(format);rate = dec.format((double) num1 / num2*100) + "%";} else if (num1 != 0 && num2 == 0) {rate = "100.00%";}return rate;}/*** 计算百分比 保留两位小数* @param num1* @param num2* @return*/public static String getPercent(BigDecimal num1, BigDecimal num2) {String rate = "0.00%";String format = "0.00";if (num1.intValue() != 0 && num2.intValue() != 0) {DecimalFormat dec = new DecimalFormat(format);rate = dec.format(num1.divide(num2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue()) + "%";} else if (num1.intValue() != 0 && num2.intValue() == 0) {rate = "100.00%";}return rate;}/*** 计算百分比,保留两位小数,若有效数字为0,则往后取到第一个不为零的* @param num1* @param num2* @return*/public static String getPercentPro(long num1, long num2) {String rate = "0.00%";String format = "0.00";if (num1 != 0 && num2 != 0) {double v = (double) num1 / num2 * 100;if (v >= 0.01) {DecimalFormat dec = new DecimalFormat(format);rate = dec.format(v) + "%";} else {while (true) {DecimalFormat dec = new DecimalFormat(format);String format1 = dec.format(v);if (Double.parseDouble(format1) > 0) {rate = format1 + "%";break;} else {format = format + "0";}}}} else if (num1 != 0 && num2 == 0) {rate = "100.00%";}return rate;}/*** 计算百分比 保留整数* @param num1* @param num2* @return*/public static String getPercentNoPoint(BigDecimal num1, BigDecimal num2) {String rate = "0%";String format = "0";if (num1.intValue() != 0 && num2.intValue() != 0) {DecimalFormat dec = new DecimalFormat(format);rate = dec.format(num1.divide(num2, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue()) + "%";} else if (num1.intValue() != 0 && num2.intValue() == 0) {rate = "100%";}return rate;}

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

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

相关文章

分享一款可编辑本地电脑文件的在线编辑器

之前见过在线版的VSCode,被惊讶到了。网页上竟然可以编辑电脑本地的文件,打破了网页无法编辑本地电脑文件的限制。一直好奇怎么做的。抽空研究了一下,然后发现其实也不难。背景 之前见过在线版的VSCode,被惊讶到了。网页上竟然可以编辑电脑本地的文件,打破了网页无法编辑本…

xhcms

xhcms 目录结构 admin --管理后台文件夹 css --存放css的文件夹 files --存放页面的文件夹 images --存放图片的文件夹 inc --存放网站配置文件的文件夹 install --网站进行安装的文件夹 seacmseditor --编辑器文件夹 templ…

lrzsz安装完成后rz乱码

rz选择文件夹后乱码传输不到linux里面, 这时候只需要rz -be再选择文件 这样就可以进行后续的解压了tar -zxvf jdk-8u65-linux-x64.tar.gz

椭流线法设计配光器

本文介绍了利用椭流线法设计高效均匀的LED配光器,通过对边光原理、反射定律及椭圆几何特性的深入分析,结合Matlab和SolidWorks软件实现光学仿真,最终成功设计出接收效率高、均匀度优的配光器。椭流线法设计配光器 椭流线法设计配光器 一、设计原理 1、边光原理 边光原理是非…

wx云开发增删改查

首先是.wxml文件,此处为固定数据的新增<button type="primary" bind:tap="addData"> //调用.js中addData方法插入数据 </button>对应.js文件//添加数据addData(){wx.showLoading({ //showLoading(api接口)(防止用户多次…

剪裁法设计配光器

剪裁法设计配光器通过光源角分割和目标面分割,利用边光原理和反射定律,计算并构建光学母线,以实现高均匀度和高光效的均匀圆斑光学设计。剪裁法设计配光器 剪裁法设计配光器 一、设计原理边光原理 边光原理是非成像光学中的一个基础原理,其内容可以表述为:来自光源边缘的光…

iOS-列表视图

在iOS开发中,UITableView和UICollectionView是两个非常核心的用于展示集合数据的UI组件。它们都能以列表的形式展示数据,但各自的特点和使用场景有所不同。 UITableView UITableView用于展示和管理垂直滚动的单列数据列表。它是以行的形式展示数据,每行(cell)可以展示相同…

CPC配光系统设计

本文详细介绍了CPC(复合抛物线聚光器)配光系统的设计过程,包括设计原理、抛物流线几何特性及其设计要求和流程,并通过Matlab和SolidWorks绘制模型,最后在TracePro中进行仿真验证,确保系统满足均匀照度和高效接收率的目标。CPC配光系统设计 CPC配光系统设计 一、设计原理 …

VMware vSphere Tanzu部署_14_部署容器应用

1.部署运行容器应用 1.1. 登录tkc集群 jianhua@napp:~/tkc$ kubectl vsphere login --server=192.168.203.194 \ --tanzu-kubernetes-cluster-name tkc-dev-cluster \ --tanzu-kubernetes-cluster-namespace tkc-01 \ --vsphere-username administrator@vsphere.local \ --ins…

贝塞尔曲线原理、推导及Matlab实现

本文详细解析了贝塞尔曲线的定义、性质、构建方法以及多种阶数的推导公式,并提供了完整的Matlab代码用于绘制和计算贝塞尔曲线。贝塞尔曲线原理、推导及Matlab实现 贝塞尔曲线原理、推导及Matlab实现 一、简介 贝塞尔曲线提出 在数学的数值分析领域中,贝塞尔曲线(English:B…

刘积仁的大健康“长跑”

软件是一个长命的产业,但软件企业的寿命都很短。懂得怕死,才能有机会活得长久。 这一次,刘积仁又为东软医疗找到了强大助力!中国通用技术(集团)控股有限责任公司(以下简称通用技术集团)所属资本公司战略投资东软集团在医疗健康领域资的创新业务公司——东软医疗,双方也由…

【AppStore】一文让你学会IOS应用上架Appstore

咱们国内现在手机分为两类,Android手机与苹果手机,现在用的各类APP,为了手机的使用安全,避免下载到病毒软件,官方都极力推荐使用手机自带的应用商城进行下载,但是国内Android手机品类众多,手机商城各式各样,做不到统一,所以Android的APP上架得一个一个平台去申请上架,…