电商项目中分与元金额单位互转实战

news2024/12/29 11:18:01

在Java开发中,可能遇到金额单位的转换,比如本系统用分作为金额的基本单位,对方系统用元作为金额的基本单位,这就需要进行单位转换,记录下来,方便备查。

一、分转元

分转元,分到元相差两位,小数点前移2位,即除于100,long转decimal,可使用 divide方法。
注意要使用setScale,指定小数点保留位数。

/**
* 功能:Long转换给双精度decimal(分转元)
*
* @param amount
* @return
*/
public static BigDecimal transLongToDecial(Long amount) {
   if (null == amount) {
       return new BigDecimal(0);
   }
   return new BigDecimal(amount).divide(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
}

单元测试转换

 // 分转元
Long amount = 1829L;
BigDecimal decialAmount = transLongToDecial(amount);
System.out.println("分转元transLongToDecial为:" + decialAmount);

执行结果如下所示
在这里插入图片描述

二、元转分

元转分,分到元相差两位,小数点后移2位,即乘于100,decimal转long,可使用 multiply方法。

/**
  * 功能:双精度decimal转换Long(元转分)
  * @param amount
  * @return
  */
 public static Long transDecialToLong(BigDecimal amount) {
     if(null == amount) {
         return 0l;
     }
     return amount.multiply(new BigDecimal(100)).setScale(1, RoundingMode.HALF_UP).longValue();
 }

单元测试

// 元转分
BigDecimal decimalAmount = new BigDecimal(18.29);
Long longAmount = transDecialToLong(decimalAmount);
System.out.println("元转元transDecialToLong为:" + longAmount);

测试结果如下图所示。
在这里插入图片描述
以上就是分和元相互转换的工具方法,仅供参考!

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

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

相关文章

单片机软件架构连载(5)-队列

前面讲了指针、结构体之类的基础知识。 这篇内容开始,就要对这些基础知识,做一些复杂的应用了,比如说队列。 其实,在2018年的时候,我录制过一套程序架构的视频,里面有手把手写队列的教程,讲了一…

js逆向研究【案例实战2】

接口分析 数据接口如下: 没有关键词,选择使用接口路径定位js【使用路径api/coin/tickers】 定位到一下js文件,并在来源面板打开。 逆向调试与代码还原 搜索关键词JSON.parse 定位到以上的位置,断点调试后确定er函数即为解密…

CC2利用链分析

分析版本 Commons Collections 4.0 JDK 8u65 环境配置参考JAVA安全初探(三):CC1链全分析 分析过程 CC2是在CC4的基础上做了一点改动,和之前CC3结合CC1 InvokerTransformer一样的。CC3利用链分析 因为TemplatesImpl是可序列化的,利用反射把Template…

AI工具,如何通过 GPT-4o 提高工作效率

文章目录 引言一、理解GPT-4o及其功能二、如何利用GPT-4o提高工作效率1. 代码生成与优化2. 自动化测试与调试3. 技术文档撰写与知识管理 三、实际案例与成功应用1. GitHub 协作与问题解决2. 敏捷开发与迭代优化 四、GPT-4o的挑战与应对策略五、未来展望与发展方向六、结论 &…

开发任务优先级排序 6大影响因素

开发任务优先级排序,有助于项目关键任务获得充足资源,确保项目关键路径不受阻碍,助力项目按时完成,减少后期风险和不确定性。如果没有对开发任务进行优先级排序,团队可能会花费大量时间在低价值或非关键任务上&#xf…

昇思MindSpore学习入门-模型模块自定义

基础用法示例 神经网络模型由各种层(Layer)构成,MindSpore提供构造神经网络层的基础单元Cell,基于Cell进行神经网络封装。下面使用Cell构造经典模型AlexNet。 如图所示,AlexNet由5个卷积层与3个全连接层串联构成,我们使用mindspo…

Open3D 从体素网格构建八叉树

目录 一、概述 1.1体素网格 1.2八叉树构建 1.3应用 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2体素网格 3.3八叉树 3.4体素网格 一、概述 八叉树(Octree)是一种树状数据结构,用于递归地将三维空间划分为…

Docker进入MongoDB

先是命令行开启docker镜像,然后进入docker镜像,这是两步 进入之后,开头会变成root,我的理解是进入了另一个linux系统了,直接执行相应的软件 这里直接use databse就是进入了,据说MongoDB是慢启动&#xff0c…

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片(Form_Vision部分代码)

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片(Form_Vision部分代码) 1 目标效果视频 CamManager 2 增加一个class IMG_BUFFER 用来管理采集的图片 // <summary> /// IMG_BUFFER 用来管理内存图片的抓取队列 /// </summary> public class IMG_BUFF…

基于AI的3D场景重建技术新突破!破局自动驾驶端到端仿真

场景的保真度&#xff0c;对于自动驾驶仿真和合成数据生成至关重要&#xff0c;场景重建保真度不足&#xff0c;将极大地制约高阶自动驾驶系统的训练效果。同时&#xff0c;在用于训练大模型和具身智能的合成数据领域&#xff0c;同样对低成本的高保真场景有巨大的需求。 在此…

【Python_GUI】thinker布局管理——pack()方法

pack()方法是比较常用的布局组件之一&#xff1a;其语法如下&#xff1a; widget.pack(options) 其常用的参数及含义如下&#xff1a; 参数含义side设置组件水平展示或垂直展示padx设置组件距离窗口的水平距离pady设置组件距离窗口的垂直距离ipadx设置组件内的文字距离组件边…

从零开始做题:My_lllp

题目 给出一张png图片 解题 ┌──(holyeyes㉿kali2023)-[~/Misc/题目/zulu/My_lllp] └─$ python2 lsb.py extract my_lllp.png out.txt my_lllp [] Image size: 1080x1079 pixels. [] Written extracted data to out.txt. ┌──(holyeyes㉿kali2023)-[~/Misc/题目/zul…

HSP_15章 Python_模板设计模式和oop进阶总结

P136 模板设计模式 1. 设计模式简介 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式 设计模式就像是经典的棋谱&#xff0c;不同的棋局&#xff0c;我们用不同的棋谱&#xff0c;免去我们自己再思考和摸索 2. 模板设计模式 基本…

DFS回溯剪枝|KMP通过数组记录减少判断子字符串|思路

KMP|DFS回溯剪枝 #1、NC149kmp 初步思路&#xff1a; 两层for循环&#xff0c;一个T的字符开始与 S的字符比较&#xff0c;挨个比较&#xff0c;遇到不同就continue当前T的字符&#xff0c;重复步骤》效率太低&#xff0c;超时 eg: TABSABABABD SABABD S&#xff01;A时&#…

Windows10/11家庭版开启Hyper-V虚拟机功能详解

Hyper-V是微软的一款虚拟机软件&#xff0c;可以使我们在一台Windows PC上&#xff0c;在虚拟环境下同时运行多个互相之间完全隔离的操作系统&#xff0c;这就实现了在Windows环境下运行Linux以及其他OS的可能性。和第三方虚拟机软件&#xff0c;如VMware等相比&#xff0c;Hyp…

Java版Flink使用指南——定制RabbitMQ数据源的序列化器

大纲 新建工程新增依赖数据对象序列化器接入数据源 测试修改Slot个数打包、提交、运行 工程代码 在《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中&#xff0c;我们从RabbitMQ队列中读取了字符串型数据。如果我们希望读取的数据被自动化转换为一个对象&#x…

white-space属性换行

white-space 属性可以控制元素中文本的换行方式。常用的取值有&#xff1a; normal&#xff08;默认值&#xff09;&#xff1a;根据容器的大小自动换行。nowrap&#xff1a;文本不进行换行&#xff0c;超过容器宽度时会溢出。pre&#xff1a;保留原始的空白符&#xff08;空格…

5.Python学习:面向对象

1.面向对象和面向过程的区别 以下五子棋为例&#xff1a; 2.类和实例 &#xff08;1&#xff09;类是抽象的模板&#xff0c;实例是根据模板创建出来的具体的对象 &#xff08;2&#xff09;比如人类就是一个类&#xff0c;刘亦菲就是人类的一个实例 2.1 新建类和类的实例…

【uniapp-ios】App端与webview端相互通信的方法以及注意事项

前言 在开发中&#xff0c;使用uniapp开发的项目开发效率是极高的&#xff0c;使用一套代码就能够同时在多端上线&#xff0c;像笔者之前写过的使用Flutter端和webview端之间的相互通信方法和问题&#xff0c;这种方式本质上实际上是h5和h5之间的通信&#xff0c;网上有非常多…

计算机的错误计算(二十五)

摘要 介绍&#xff08;不&#xff09;停机问题。给了一个算式&#xff0c;当计算机的输出为0时&#xff0c;一般需要提高计算精度继续计算&#xff0c;一直到获得非0值或有效数字。但是&#xff0c;由于事先不清楚算式的准确值是否为0或不为0&#xff0c;因此往往陷入两难境地…