`

银行金钱计算专用工具类

阅读更多
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各种工具类-非常齐全

    日期工具类可以帮助我们进行日期时间的格式化、比较、计算等操作。例如,`LocalDate`、`LocalTime`和`LocalDateTime`类提供了强大的API来处理日期和时间。 2. **字符串工具类**: 字符串是编程中最常见的数据类型...

    强大的时间计算工具类

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

    50个左右的JAVA工具类,相对比较全

    4. **数学计算工具类**:如Apache Commons Math提供了各种数学计算,包括统计、矩阵、随机数生成等。 5. **IO工具类**:Java的java.io包基础功能,以及Apache Commons IO提供了更多高级操作,如文件复制、读写、流...

    安防工程专用镜头距离计算工具

    "安防工程专用镜头距离计算工具"是专为此目的设计的专业软件,旨在简化和精确化这一过程。下面我们将深入探讨这个工具的使用、功能以及在实际应用中的重要性。 首先,我们要理解镜头距离计算的基本原理。在视频监控...

    破解专用的辅助计算工具

    破解辅助计算工具,破解专用,用和上的朋友赶快下载吧。。

    Java生成订单号的工具类

    该工具类是Java编写下载即可使用,该工具类中有生成各种长度的订单号,有英文数字混合的,有数字的

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

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

    日期时间处理工具类

    这是一个比较全面的处理日期时间的工具类,利用该工具类可以得到你想要的日期时间。里面代码简洁,方法已经封装好,只需要调用即可。自己可以将其打成jar包来用

    百度地图工具类

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

    经纬度距离计算小工具

    经纬度距离计算小工具,经纬度距离计算小工具

    精心整理的java常用的26个工具类

    精心整理的26个java常用工具类,如:FastJsonUtil,StringHelper,RandomHelper,FileHelper,HttpClientHelper等等,直接使用maven导入到eclipse中使用即可。

    Xml和Json互转工具类

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

    RC吸收电路计算工具.xls

    RC吸收电路计算工具

    TCP/IP校验和计算小工具

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

    医保局加解密方法工具类及调用demo(医保电子处方中心)V1.0

    成都市医保局加解密方法工具类及调用demo(医保电子处方中心)V1.0

    天线覆盖距离计算工具

    天线覆盖距离计算工具,可以计算天线覆盖范围及下倾角

    CRC校验码计算小工具

    "CRC计算器.exe"很可能是用于计算MODBUS报文CRC值的工具,用户只需输入待校验的数据,程序会自动完成计算,提供正确的CRC校验码。"BS_DOT2.exe"可能是一个与MODBUS协议相关的软件或者是一个与CRC校验配合使用的程序...

    校验和计算工具

    标题中的“校验和计算工具”是指一种软件应用,它主要服务于编程人员,用于计算数据的校验和。校验和是一种在数字领域验证数据完整性的技术,它通过计算一段数据的特定数值来确保数据在传输或存储过程中没有发生错误...

Global site tag (gtag.js) - Google Analytics