最近在做商城项目,特意弄了一个关于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中关于涉及到金钱计算方面的工具类!相关推荐

  1. 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  2. Android旋转视频工具类,Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】...

    本文实例讲述了Android开发实现的IntentUtil跳转多功能工具类.分享给大家供大家参考,具体如下: 说明:此工具类是本人开发中总结下来的,还有其它的跳转亲给我留言,希望大家一起把这个工具类打 ...

  3. Android中的缓存处理及异步加载图片类的封装

    一.缓存介绍: (一).Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一. 1.没有缓存的弊端: 流量开销:对于客户端--服务器端应用,从远程获取图 ...

  4. dateutil 日期计算_时间工具类DateUtil的使用

    ###前言 在Android开发过程中,我们经常会用到时间相关方法.这里我封装一个时间工具类`DateUtil`,以方便使用. 今天涉及内容: 1. DateUtil在MainActivity中的使用 ...

  5. 【Android】详解7.0带来的新工具类:DiffUtil

    本文出自: [张旭童的博客] 博客地址:http://blog.csdn.net/zxt0601/article/details/52562770 一 概述 DiffUtil是support-v7:2 ...

  6. Android 图片选择和拍照(剪辑)及压缩问题 工具类

    图片选择和拍照在开发过程中,会遇到不少坑: 1.版本4.4以后选择图片后不会返回绝对路径,但返回Uri,要再查询一次 2.去剪辑时,设置了true的话直接返回bitmap,可能会很占内存,有些机子会挂 ...

  7. Android 项目必备(九)--> 项目常用工具类

    文章目录 AppUtils.java DeviceUtils.java NetUtils.java DateUtil.java DensityUtil.java FileUtils.java Stri ...

  8. android 动态录音权限,Android如何判断手机是否有录音权限的工具类

    作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...

  9. android dialog 隐藏状态栏_Android开发不得不收集的工具类集合

    嗨,你终于来啦 ~ 等你好久啦~ 喜欢的小伙伴欢迎关注,我会定期分享Android知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿.更新了几天Android基 ...

  10. Aqi计算首要污染物工具类

    package com.cc.common.utils.aqiutil;import java.util.ArrayList; import java.util.Arrays; import java ...

最新文章

  1. 《The Sixth Sense》(《灵异第六感》)观后
  2. java删除本地文件_读取Properties文件六种方法
  3. 敏捷开发与中医理论系列之一:序言及为何中医教材都是千年古籍
  4. 如何组织公司的线下活动
  5. [js] 不用 + eval Function 实现加法
  6. DBA:介里有你没有用过的“CHUAN”新社区版本Redis6.0
  7. Java 基础 —— Character 与 String
  8. splice方法_Array中splice用法
  9. linux Rh界面,Ubuntu Linux与RH系列的不同之处
  10. 通过表达式树构建URL时正确识别ActionNameAttribute
  11. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_11_反射_案例
  12. 数学女孩-伽罗瓦理论读书笔记尺规作图
  13. 使用group by查询时报错ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_grou
  14. 华为网络拒绝接入_为何华为手机网络拒绝接入
  15. java分割图片为九宫格
  16. 高压直流电源为什么要“接地”?如何“接地”?
  17. Code Sign error: Provisioning profile '6805769A-5085-4BE7-B9D1-2859CD2CBE9E' can't be found
  18. appium滑动操作(向上、向下、向左、向右滑动)
  19. 微信小程序--引用第三方组件
  20. 计算机组成原理:系统总线总结

热门文章

  1. 集算器替代存储过程实现报表数据源
  2. python输出集合中的所有子集_python列出集合中所有子集
  3. swift 打开第三方应用_Swift常用第三方
  4. 【区块链扩容】侧链技术 Plasma(Layer 2)
  5. [转]汽车ARM攒机指南
  6. PyQt5 与 PySide2 所有事件大集合,一段代码包括键盘、鼠标和窗口所有事件
  7. Laravel打印操作的sql 阿星小栈
  8. 数据技术篇之数据同步
  9. java date 年龄_Java 根据年月日精确计算年龄
  10. td-agent 安装,配置,采集日志到postgresql