Android中关于涉及到金钱计算方面的工具类!
最近在做商城项目,特意弄了一个关于money方面的工具类,发上来,记录一下!
package jt.kundream.utils; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.HashMap; import java.util.Map; /** * 版权所有,违法必究!!! * * @author Yang on 2018/4/3 17:06; * @copyright:©2017-2018 * @desc:计算金钱的工具类,提供加减乘除的精确计算 */ public class CurrencyUtils {public static final Map<String, String> CURRENCY_NAME_CODE_PAIRS = new HashMap<String, String>(22); static {CURRENCY_NAME_CODE_PAIRS.put("澳大利亚元", "AUD"); CURRENCY_NAME_CODE_PAIRS.put("巴西里亚尔", "BRL"); CURRENCY_NAME_CODE_PAIRS.put("加拿大元", "CAD"); CURRENCY_NAME_CODE_PAIRS.put("瑞士法郎", "CHF"); CURRENCY_NAME_CODE_PAIRS.put("丹麦克朗", "DKK"); CURRENCY_NAME_CODE_PAIRS.put("欧元", "EUR"); CURRENCY_NAME_CODE_PAIRS.put("英镑", "GBP"); CURRENCY_NAME_CODE_PAIRS.put("港币", "HKD"); CURRENCY_NAME_CODE_PAIRS.put("印尼卢比", "IDR"); CURRENCY_NAME_CODE_PAIRS.put("日元", "JPY"); CURRENCY_NAME_CODE_PAIRS.put("韩国元", "KRW"); CURRENCY_NAME_CODE_PAIRS.put("澳门元", "MOP"); CURRENCY_NAME_CODE_PAIRS.put("林吉特", "MYR"); CURRENCY_NAME_CODE_PAIRS.put("挪威克朗", "NOK"); CURRENCY_NAME_CODE_PAIRS.put("新西兰元", "NZD"); CURRENCY_NAME_CODE_PAIRS.put("菲律宾比索", "PHP"); CURRENCY_NAME_CODE_PAIRS.put("卢布", "RUB"); CURRENCY_NAME_CODE_PAIRS.put("瑞典克朗", "SEK"); CURRENCY_NAME_CODE_PAIRS.put("新加坡元", "SGD"); CURRENCY_NAME_CODE_PAIRS.put("泰国铢", "THB"); CURRENCY_NAME_CODE_PAIRS.put("新台币", "TWD"); CURRENCY_NAME_CODE_PAIRS.put("美元", "USD"); }private CurrencyUtils() {}/** * 判断valA是否大于valB,如果valA大于valB,那么返回true,否则返回false * * @param valA * @param valB * @return * @author wangjc * @date 2014-12-8 */ public static boolean greaterThan(BigDecimal valA, BigDecimal valB) {return (valA.compareTo(valB) > 0); }/** * 判断valA和valB的值是否相等,如果valA和valB的值是否相等,那么返回true,否则返回false * * @param valA * @param valB * @return * @author wangjc * @date 2014-12-8 */ public static boolean equals(BigDecimal valA, BigDecimal valB) {return (valA.compareTo(valB) == 0); }/** * 用于货币计算的加法,返回结果默认精确到小数点后两位,舍入模式:四舍五入 * * @param valA * @param valB * @return (valA + valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal add(BigDecimal valA, BigDecimal valB) {return valA.add(valB).setScale(2, RoundingMode.HALF_UP); }/** * 用于货币计算的加法,返回结果的舍入模式:四舍五入 * * @param valA * @param valB * @param scale 返回结果的精确度,设置返回结果精确到小数点后几位 * @return (valA + valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal add(BigDecimal valA, BigDecimal valB, int scale) {return valA.add(valB).setScale(scale, RoundingMode.HALF_UP); }/** * 用于货币计算的减法,返回结果默认精确到小数点后两位 * * @param valA * @param valB * @return (valA - valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal minus(BigDecimal valA, BigDecimal valB) {return valA.add(valB.negate()).setScale(2, RoundingMode.HALF_UP); }/** * 用于货币计算的减法,返回结果的舍入模式:四舍五入 * * @param valA * @param valB * @param scale 返回结果的精确度,设置返回结果精确到小数点后几位 * @return (valA - valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal minus(BigDecimal valA, BigDecimal valB, int scale) {return valA.add(valB.negate()).setScale(scale, RoundingMode.HALF_UP); }/** * 用于货币计算的乘法,返回结果默认精确到小数点后两位 * * @param valA * @param valB * @return (valA * valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal multiply(BigDecimal valA, BigDecimal valB) {return valA.multiply(valB).setScale(2, RoundingMode.HALF_UP); }/** * 用于货币计算的乘法,返回结果的舍入模式:四舍五入 * * @param valA * @param valB * @param scale 返回结果的精确度,设置返回结果精确到小数点后几位 * @return (valA * valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal multiply(BigDecimal valA, BigDecimal valB, int scale) {return valA.multiply(valB).setScale(scale, RoundingMode.HALF_UP); }/** * 用于货币计算的除法,返回结果默认精确到小数点后两位 * * @param valA 被除数 * @param valB 除数 * @return (valA / valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal divide(BigDecimal valA, BigDecimal valB) {if (BigDecimal.ZERO.compareTo(valB) == 0) {throw new ArithmeticException("除数不能为0"); }return valA.divide(valB, 2, RoundingMode.HALF_UP); }/** * 用于货币计算的除法,返回结果的舍入模式:四舍五入 * * @param valA 被除数 * @param valB 除数 * @param scale 返回结果的精确度,设置返回结果精确到小数点后几位 * @return (valA / valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal divide(BigDecimal valA, BigDecimal valB, int scale) {if (BigDecimal.ZERO.compareTo(valB) == 0) {throw new ArithmeticException("除数不能为0"); }return valA.divide(valB, scale, RoundingMode.HALF_UP); }/** * 将指定的值转换为BigDecimal对象,如果val为null或者为空,那么默认返回0 * * @param val * @return * @author wjc * @date 2017年1月17日 */ public static BigDecimal toBigDecimal(String val) {if (val == null || "".equals(val.trim())) {return BigDecimal.ZERO; } else {return new BigDecimal(val); }}/** * Company: YunBeiTeac * Copyright: Copyright (c) 2017-2018 * * @author Created by YangTianKun at 2018/4/12/012 and 11:28 * @Email 245086168@qq.com * describe:使用Bigdecimal保留2位小数 用于设定金钱方面的显示 */ public static String format2(double value) {BigDecimal bd = new BigDecimal(value); bd = bd.setScale(2, RoundingMode.HALF_UP); return bd.toString(); }/** * 用于经纬度计算的加法,返回结果默认精确到小数点后6位,舍入模式:四舍五入 * * @param valA * @param valB * @return (valA + valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal addLatAndLng(BigDecimal valA, BigDecimal valB) {return valA.add(valB).setScale(6, RoundingMode.HALF_UP); }/** * 用于经纬度计算的减法,返回结果默认精确到小数点后6位 * * @param valA * @param valB * @return (valA - valB)的结果 * @author wangjc * @date 2014-12-10 */ public static BigDecimal minusLatAndLng(BigDecimal valA, BigDecimal valB) {return valA.add(valB.negate()).setScale(6, RoundingMode.HALF_UP); }}
Android中关于涉及到金钱计算方面的工具类!相关推荐
- 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- Android旋转视频工具类,Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】...
本文实例讲述了Android开发实现的IntentUtil跳转多功能工具类.分享给大家供大家参考,具体如下: 说明:此工具类是本人开发中总结下来的,还有其它的跳转亲给我留言,希望大家一起把这个工具类打 ...
- Android中的缓存处理及异步加载图片类的封装
一.缓存介绍: (一).Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一. 1.没有缓存的弊端: 流量开销:对于客户端--服务器端应用,从远程获取图 ...
- dateutil 日期计算_时间工具类DateUtil的使用
###前言 在Android开发过程中,我们经常会用到时间相关方法.这里我封装一个时间工具类`DateUtil`,以方便使用. 今天涉及内容: 1. DateUtil在MainActivity中的使用 ...
- 【Android】详解7.0带来的新工具类:DiffUtil
本文出自: [张旭童的博客] 博客地址:http://blog.csdn.net/zxt0601/article/details/52562770 一 概述 DiffUtil是support-v7:2 ...
- Android 图片选择和拍照(剪辑)及压缩问题 工具类
图片选择和拍照在开发过程中,会遇到不少坑: 1.版本4.4以后选择图片后不会返回绝对路径,但返回Uri,要再查询一次 2.去剪辑时,设置了true的话直接返回bitmap,可能会很占内存,有些机子会挂 ...
- Android 项目必备(九)--> 项目常用工具类
文章目录 AppUtils.java DeviceUtils.java NetUtils.java DateUtil.java DensityUtil.java FileUtils.java Stri ...
- android 动态录音权限,Android如何判断手机是否有录音权限的工具类
作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...
- android dialog 隐藏状态栏_Android开发不得不收集的工具类集合
嗨,你终于来啦 ~ 等你好久啦~ 喜欢的小伙伴欢迎关注,我会定期分享Android知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿.更新了几天Android基 ...
- Aqi计算首要污染物工具类
package com.cc.common.utils.aqiutil;import java.util.ArrayList; import java.util.Arrays; import java ...
最新文章
- 《The Sixth Sense》(《灵异第六感》)观后
- java删除本地文件_读取Properties文件六种方法
- 敏捷开发与中医理论系列之一:序言及为何中医教材都是千年古籍
- 如何组织公司的线下活动
- [js] 不用 + eval Function 实现加法
- DBA:介里有你没有用过的“CHUAN”新社区版本Redis6.0
- Java 基础 —— Character 与 String
- splice方法_Array中splice用法
- linux Rh界面,Ubuntu Linux与RH系列的不同之处
- 通过表达式树构建URL时正确识别ActionNameAttribute
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_11_反射_案例
- 数学女孩-伽罗瓦理论读书笔记尺规作图
- 使用group by查询时报错ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_grou
- 华为网络拒绝接入_为何华为手机网络拒绝接入
- java分割图片为九宫格
- 高压直流电源为什么要“接地”?如何“接地”?
- Code Sign error: Provisioning profile '6805769A-5085-4BE7-B9D1-2859CD2CBE9E' can't be found
- appium滑动操作(向上、向下、向左、向右滑动)
- 微信小程序--引用第三方组件
- 计算机组成原理:系统总线总结