`

银行金钱计算专用工具类

阅读更多
public final class MoneyUtils {

    /**
     * 金额0.00。
     */
    public static final BigDecimal ZERO = BigDecimal.valueOf(0.00);

    /**
     * 金额100.00。
     */
    public static final BigDecimal HUNDRED = new BigDecimal(100.00);

    private MoneyUtils() {
        super();
    }

    /**
     * 四舍五入保留1位小数(四舍六入五成双)。
     *
     * @param amount 金额。
     * @return  四舍五入保留1位小数后金额。
     */
    public static BigDecimal decimal1ByUp(BigDecimal amount) {
        return amount.setScale(1, BigDecimal.ROUND_HALF_EVEN);
    }

    /**
     * 四舍五入保留2位小数(四舍六入五成双)。
     *
     * @param amount 金额。
     * @return  四舍五入保留2位小数后金额。
     */
    public static BigDecimal decimal2ByUp(BigDecimal amount) {
        return amount.setScale(2, BigDecimal.ROUND_HALF_EVEN);
    }

    /**
     * 四舍五入保留4位小数(四舍六入五成双)。
     *
     * @param amount 金额。
     * @return 四舍五入保留4位小数后金额。
     */
    public static BigDecimal decimal4ByUp(BigDecimal amount) {
        return amount.setScale(4, BigDecimal.ROUND_HALF_EVEN);
    }


    /**
     * 除法,四舍五入保留2位小数。
     *
     * @param divideAmount 金额。
     *  @param dividedAmount 被除的金额。
     * @return  四舍五入保留2位小数后金额。
     */
    public static BigDecimal divide2ByUp(BigDecimal divideAmount, BigDecimal dividedAmount) {
        return divideAmount.divide(dividedAmount,2, BigDecimal.ROUND_HALF_EVEN);
    }

    /**
     * 除法,四舍五入保留4位小数。
     *
     * @param divideAmount 金额。
     *  @param dividedAmount 被除的金额。
     * @return  四舍五入保留2位小数后金额。
     */
    public static BigDecimal divide4ByUp(BigDecimal divideAmount, BigDecimal dividedAmount) {
        return divideAmount.divide(dividedAmount,4, BigDecimal.ROUND_HALF_EVEN);
    }


    /**
     * 是否大于0。
     *
     * @param amount 金额。
     * @return true:大于0;false;小于等于0。
     */
    public static boolean isGreaterThanZero(BigDecimal amount) {
        return amount.compareTo(BigDecimal.ZERO) == 1;
    }

    /**
     * 是否小于0。
     *
     * @param amount 金额。
     * @return true:小于0;false:大于等于0。
     */
    public static boolean isLessThanZero(BigDecimal amount) {
        return amount.compareTo(BigDecimal.ZERO) == -1;
    }

    /**
     * 是否等于0。
     *
     * @param amount 金额。
     * @return true:等于0;false:大于小于0。
     */
    public static boolean isEqualZero(BigDecimal amount) {
        return amount.compareTo(BigDecimal.ZERO) == 0;
    }


    /**
     * 第一个是否大于第二个。
     *
     * @param first  金额。
     * @param second 金额。
     * @return true:first>second;false:first<=second。
     */
    public static boolean isGreaterThan(BigDecimal first, BigDecimal second) {
        return first.compareTo(second) == 1;
    }

    /**
     * 第一个是否小于第二个。
     *
     * @param first  金额。
     * @param second 金额。
     * @return true:first<second;false:first >=second。
     */
    public static boolean isLessThan(BigDecimal first, BigDecimal second) {
        return first.compareTo(second) == -1;
    }

    /**
     * 第一个是否等于第二个。
     *
     * @param first  金额。
     * @param second 金额。
     * @return true:first=second;false:first ><second。
     */
    public static boolean isEqual(BigDecimal first, BigDecimal second) {
        return first.compareTo(second) == 0;
    }

    public static  BigDecimal POINT_BILLION = new BigDecimal("100000000");
    public static  BigDecimal TEN_THOUSANDS = new BigDecimal("10000");

    /**
     * 金额格式化为,###.00的金额,即保留两位小数。
     *
     * @param amount 需要显示成字符传,###.###的金额。
     * @return  返回String,格式为,###.###。
     */
    public static String formatAmountAsString(BigDecimal amount) {
        return amount != null ? new DecimalFormat(",##0.00").format(amount) : "0.00";
    }

    /**
     * 将格式化的字符串金额反转为{@link BigDecimal}。
     *
     * @param amount 格式为,###.###。
     * @return {@link java.math.BigDecimal}。
     */
    public static BigDecimal parseAmount(String amount) {
        return new BigDecimal(amount.replaceAll(",", ""));
    }

 

分享到:
评论

相关推荐

    java银行工具类java银行工具类

    根据银行卡号获取银行的名称 银行的机构号 银行卡的卡的类型 银行卡的卡种 工具类是由java 编写 其他的开发语言 也可以参考 包含了4800 +种卡种 自己测试了 还是比较全的 比支付宝提供的接口返回的卡种还要全 读取...

    计算距离的工具类

    计算距离的工具类计算距离的工具类计算距离的工具类计算距离的工具类计算距离的工具类

    这个是银行卡校验的工具类,所有银行都可以校验

    这个是银行卡校验的工具类,所有银行都可以校验。

    Philip天线(单端)设计匹配参数计算专用工具

    标题中的"Philip天线(单端)设计匹配参数计算专用工具"是指一款专门用于计算NXP公司的MFRC522或MFRC500 IC卡读卡器芯片天线设计匹配参数的软件工具。这款工具简化了天线设计过程,确保天线与芯片之间的通信效果最佳。...

    java 请假天数计算工具类

    Java 请假天数计算工具类是企业信息化管理中常见的需求,尤其在OA(办公自动化)系统中,用于准确计算员工的假期天数。这个工具类的设计通常涉及到日期处理、工作日计算以及根据公司规则进行调整等多个方面。在这个...

    强大的时间计算工具类

    各种时间计算模型,各种时间转换格式,获取各种格式的时间,一一尽有

    Android快速开发系列 10个常用工具类 程序源码

    2. **DateUtil**: 时间日期处理工具类,通常包含将日期格式化为字符串,字符串转换为日期,计算两个日期之间的差值等功能。在Android开发中,这类工具类能帮助开发者更好地管理和展示时间数据。 3. **BitmapUtil**:...

    java开发,30个常用工具类总结,全部来自项目实践中用到的工具类

    在Java开发中,工具类是程序员经常会用到的代码模块,它们封装了各种常见的操作,提高了代码的可重用性和可维护性。以下是对标题和描述中提到的几个常用工具类的详细说明: 1. **DateUtils**: `java.util.Date` 和 ...

    java反射工具类 ReflectionUtils

    该工具类下载后拷贝到你要用的包,只需该包名即可

    C#常用工具类代码集合Util第二版本(自己工作总结)

    C#常用工具类代码集合Util第二版本(自己工作总结),包括常用工具类,扩展方法工具类,百度地图C#工具类,Echart工具类,Office工具类,Autofac工具类,Web开发常用工具类,Winform开发常用工具类,是自己工作十年...

    JAVA SHA256Util工具类

    用java原生的摘要实现SHA256加密

    百度地图工具类

    百度地图工具类,用它分分钟实现定位功能,简单易懂,方便好用!

    JS工具类

    JavaScript(简称JS)工具类是开发过程中不可或缺的一部分,它们提供了一系列通用的方法,帮助开发者更高效地处理各种...对于开发者来说,理解和掌握这样的工具类能提升编程效率,同时也能更好地应对复杂的计算场景。

    凯瑟琳的计算工具.

    《凯瑟琳的计算工具:无线网络优化的关键助手》 在无线通信领域,网络优化是一项至关重要的任务,它直接...在无线网优领域,这类工具的出现,无疑推动了技术的进步,提升了工作效率,也为用户带来了更好的通信体验。

    OkHttp请求完美封装(并带工具类)

    MD5、RSA、Base64Utils、DialogUtil、ZXingUtils、GlideUtil、、、工具类 自己总结了一些必备的工具类,可直接放入工程,简单调用 对OkHttp进行了封装,简单调用,便于操作 进行了post、get、文件上传等进行封装

    Xml和Json互转工具类

    本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。

    checksum校验和计算工具

    标题"checksum校验和计算工具"提到了一个关键概念——`checksum`,这在IT行业中是一个重要的验证数据完整性的方法。它通常用于确保文件或数据在传输、存储过程中没有发生错误。"校验和计算工具"是指能够生成并验证...

    经纬度和方位计算小工具

    经纬度和方位计算小工具是一款专门用于地理信息处理的应用,主要功能涵盖了基于经纬度的多种计算,如两点之间的距离和方位角的确定,以及通过已知条件反推未知点的经纬度。这些功能在地理信息系统(GIS)、导航系统...

    TCP/IP校验和计算小工具

    "TCP/IP校验和计算小工具"就是专为这个目的设计的实用程序,它可以帮助网络技术人员快速、准确地计算和验证TCP/IP数据包的校验和。 TCP(传输控制协议)和IP(互联网协议)都是TCP/IP协议族的重要组成部分。TCP负责...

Global site tag (gtag.js) - Google Analytics