java String类型转换BigDecimal类型最全工具类

2023-05-16

public class BigDecimalUtil {
    /**
     * String类型转换BigDecimal类型
     */
    public static BigDecimal StringToBigDecimal(String str){
        return new BigDecimal(str);
    }

    public static final int MONEY_POINT = 2; // 货币保留两位小数

    /**
     * 格式化精度
     *
     * @param v
     * @param point
     *            小数位数
     * @return double
     */
    public static BigDecimal format(BigDecimal v, int point) {
        return v.setScale(point, BigDecimal.ROUND_HALF_UP);
    }

    /**
     *
     * @param v
     * @param point
     * @return
     */
    public static Double formatRoundUp(double v, int point) {
        NumberFormat nf = NumberFormat.getInstance();
        nf.setRoundingMode(RoundingMode.HALF_UP);//设置四舍五入
        nf.setMinimumFractionDigits(point);//设置最小保留几位小数
        nf.setMaximumFractionDigits(point);//设置最大保留几位小数
        return Double.valueOf(nf.format(v));
    }

    /**
     * 格式化金额。带千位符
     *
     * @param v
     * @return
     */
    public static String moneyFormat(Double v) {
        DecimalFormat formater = new DecimalFormat();
        formater.setMaximumFractionDigits(2);
        formater.setGroupingSize(3);
        formater.setRoundingMode(RoundingMode.FLOOR);
        return formater.format(v.doubleValue());
    }

    /**
     * 带小数的显示小数。不带小数的显示整数
     * @param d
     * @return
     */
    public static String doubleTrans(Double d) {
        if (Math.round(d) - d == 0) {
            return String.valueOf((long) d.doubleValue());
        }
        return String.valueOf(d);
    }

    /**
     * BigDecimal 相加
     *
     * @param v1
     * @param v2
     * @return double
     */
    public static Double add(double v1, double v2) {
        BigDecimal n1 = new BigDecimal(Double.toString(v1));
        BigDecimal n2 = new BigDecimal(Double.toString(v2));
        return n1.add(n2).doubleValue();
    }

    /**
     * BigDecimal 相减
     *
     * @param v1
     * @param v2
     * @return double
     */
    public static Double subtract(double v1, double v2) {
        BigDecimal n1 = new BigDecimal(Double.toString(v1));
        BigDecimal n2 = new BigDecimal(Double.toString(v2));
        return n1.subtract(n2).doubleValue();
    }

    /**
     * BigDecimal 相乘
     *
     * @param v1
     * @param v2
     * @return double
     */
    public static BigDecimal multiplyBigDecimal(BigDecimal v1, Integer v2) {
        BigDecimal n1 = new BigDecimal(Integer.toString(v2));
        return v1.multiply(n1);
    }

    /**
     * BigDecimal 相除
     *
     * @param v1
     * @param v2
     * @return double
     */
    public static Double divide(double v1, double v2) {
        BigDecimal n1 = new BigDecimal(Double.toString(v1));
        BigDecimal n2 = new BigDecimal(Double.toString(v2));
        return n1.divide(n2, 10, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * 比较大小 小于0:v1 < v2 大于0:v1 > v2 等于0:v1 = v2
     *
     * @param v1
     * @param v2
     * @return
     */
    public static int compare(double v1, double v2) {
        BigDecimal n1 = new BigDecimal(Double.toString(v1));
        BigDecimal n2 = new BigDecimal(Double.toString(v2));
        return n1.compareTo(n2);
    }

    /**
     *
     * @param args
     */
    public static void main(String[] args) {
         System.out.println(divide(1, 8));
         System.out.println(divide(1.0, 3.0));
         System.out.println(add(2.79, -3.0));
        System.out.println(doubleTrans(10000.0));
    }

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java String类型转换BigDecimal类型最全工具类 的相关文章

  • WSL:访问Windows目录

    Time xff1a 20190704 Env xff1a WSL Ubuntu 在Windows的WSL中访问Windows的目录 span class token function cd span mnt 可以看到盘符 进入之后就可以访
  • ExpRe[18] 手动构建Docker镜像[1] 指定cuda、python包版本

    文章目录 指定cuda版本准备miniconda创建环境 xff0c 指定包版本使用 96 git clone b 96 指定分支并安装 总结和问答练习 时效性 本篇撰写时间为2021 12 9 xff0c 由于计算机技术日新月异 xff0
  • 资料分享:TI AM5708平台特点和典型应用

    此文章原创来源于 xff1a 创龙电子 产品简介 xff1a AM5708开发板是一款由创龙基于TI AM570x浮点DSP C66x 43 ARM Cortex A15工业控制及可编程音视频处理器 由SOM TL570x核心板设计的开发板
  • Linux系统的休眠与唤醒简介

    转文地址 xff1a http blog 163 com jiaguang3010717 64 126 blog static 1268082432010310103037253 系统挂起 xff08 Suspend xff09 是电源管理
  • intellij idea cpu占用率太大太满 运行速度太慢 使了五个解决方法最终成功

    突然发现 xff0c intellij idea 特别卡 xff0c 在代码间移动的时候 xff0c 居然刷新都跟不上 xff0c 然后打开任务管理器一看 xff0c CPU占用率100 intellij idea自己一个程序的占用率就高达
  • Ubuntu21.04安装cuda10.2和cudnn

    系统 xff1a Ubuntu21 04 显卡 xff1a NVIDIA 1080Ti cuda是NVIDIA公司设计用来加速GPU训练的 xff0c 而cudnn则是可以把cuda应用到深度学习领域 xff0c 如果想用GPU跑深度神经网
  • 基于C语言的状态机实现技术

    一 简介 有限状态机是一种用来进行对象行为建模的工具 xff0c 其作用主要是描述对象在它的生命周期内所经历的状态序列 xff0c 以及如何响应来自外界的各种事件 有限状态机 xff08 Finite State Machine或者Fini
  • wampserve详细安装教程(手把手教你搭建)

    前提提醒 xff1a 如果你为纯小白直接按照操作步骤进行即可 xff08 忽略进阶教程 xff09 xff0c 如果你知道进阶教程是什么可参照教程中的非小白步骤 使用前请关闭其他本地环境软件 xff0c 否则会出现冲突 该教程为本地环境搭建
  • Ubuntu18.04扩展home目录分区记录

    前言 最近Ubuntu18 04系统的home目录空间不够用了 xff0c 之前安装系统的时候 xff0c 给home分配的空间只占了根目录的很小一部分 xff0c 因此就想把根目录的空余空间转给home 涉及到系统分区调整 xff0c 因
  • 优化后亲测可用!免费下载QQ音乐大部分资源

    音乐下载器 优化后亲测可用 xff01 免费下载QQ音乐大部分资源 眼看着网上许多下歌的插件用不了了 xff0c 又不想买VIP xff0c 便非常着急 突然我想到了接口这玩意儿 xff0c 于是我 奥我真是个人才 xff01 突然我看见了
  • 自动祝福程序(定时发送消息)

    有个同学找我帮忙 xff1a 明天是她朋友的生日 xff0c 但她没时间发送祝福 xff0c 问我能不能弄个自动发送 我想 xff0c QQ并没有内置的定时发送功能 xff0c 紧接着又想起了QQ刷屏助手 xff08 见我以前的博文 xff
  • 停更

    停更CSDN CSDN是我的第一个博客 xff0c 它也很完美 xff0c 但我的博客经常没能通过它的审核 xff0c 用起来很不爽 因此 xff0c 我决定停更CSDN xff0c 以后的博客都将发布到博客园 新博客链接 https ww
  • 停更规则更新

    我觉得嘛 来这里写东西点击量更高 所以以后软件不在这里发 其他的东西我还是会更新的 xff01 另外 xff0c 我会设定从WordPress个人博客上进行博客搬家 xff0c 不过 xff0c 除了上面所谓的 其他东西 以外 xff0c
  • 免费建站记

    好久不见 xff01 另外 xff0c 我可能还会发布一篇国内操作系统的测评记录 xff08 会不会发布取决于我写不写得完 xff09 首先 xff0c 这篇文章是从我个人博客上搬运的 xff0c 所以可能有些地方会有格式上的不正确 xff
  • 如果没有Linux,这个世界会怎样?

    众所周知 xff0c Linux是一个开源的操作系统 自从它流行起来 xff0c 微软就渐渐失去了地位 Linux在我们生活中的每一处 xff0c 但是 xff0c 假如没有Linux这一些开源操作系统 xff0c 会发生什么 xff1f
  • 音乐播放器

    完善音乐下载器时找到一个音乐播放器 xff0c 自己完善了下 软件原作者 xff1a 嘟嘟还没长大 完善内容 支持文件拖动打开 支持自动获取必应每日一图并显示 随机播放支持选择路径 代码 span class token keyword i
  • Python Tkinter颜色参考程序

    这是一个颜色参考程序 xff0c Python程序员专用 点击任意颜色可以复制颜色的英文名称 已经修改前景色 xff0c 所有字都看得清 xff08 终于找到一件比肝作业更累的事情 xff09 话不多说 xff0c 贴代码 代码 span
  • 脚本控制nginx

    以下 etc init d nginx 文件的内容 bin bash nginx Startup script for the Nginx HTTP Server it is v 0 0 2 version chkconfig 85 15
  • 关于计算机系统基础debian 11安装(感觉也适用debian10啥的)

    一定要记住自己起的用户名 xff01 xff01 xff01 xff01 xff01 xff01 xff01 还要记得自己的密码 额 xff0c 这门课程需要安装virtualbox和debian xff0c 有的同学会像我一样为此苦恼 x
  • android获取wifi的IP,子网掩码,网关,dns等信息

    使用 DhcpInfo 获取这些信息 xff0c 返回的是一个int型数据 xff0c 转换下得到想要的信息 xff0c 代码如下 xff1a public class MainActivity extends Activity priva

随机推荐