• bidDecimal
    在java.math包中提供了BigDecimal,用来对超过16位有效的数进行精确运算,
    double双精度变量可以处理16位有效数字,float和double只能做工程计算,但是在商业中要用BidDecimal来处理数据,
    BigDecimal创建的是对象,不能使用运算符来直接进行数学运算,必须要调用其方法来进行运算,参数必须是bigDecimal对象,
  • 构造器 创建对象
BigDecimal bigDecimal = new BigDecimal(123);//参数是int
BigDecimal bigDecimal1 = new BigDecimal(12341513113L);//参数是long
BigDecimal bigDecimal2 = new BigDecimal("987654321");//参数是String
BigDecimal bigDecimal3 = new BigDecimal(2.3);//参数是double
System.out.println(bigDecimal);
System.out.println(bigDecimal1);
System.out.println(bigDecimal2);
System.out.println(bigDecimal3);


注意参数为double类型的数据,带入到构造器中其结果有一定的不可预知性,
如果参数必须是double类型可以转化成字符串啊,

  • BigDecimal加减乘除运算
    对于常用的加减乘除运算,bigdecimal类提供了相对应的方法。
    public BigDecimal add(Decimal value);//加法;
    subtract(value) ;//减法
    multiply(value);//乘法
    divide(vlaue);//除法
package com.bjsxt;
import com.bjsxt.pojo.Users;import java.math.BigDecimal;import static java.math.BigDecimal.*;public class Test {public static void main(String[] args) {BigDecimal a = new BigDecimal(4.4);BigDecimal b = new BigDecimal(1.1);BigDecimal c = new BigDecimal("5");BigDecimal d = new BigDecimal(2);System.out.println(a.divide(b,0,ROUND_DOWN));//4.4/1.1System.out.println(a.add(b));//4.4+1.1System.out.println(a.subtract(b));//4.4-1.1System.out.println(a.multiply(d));//4.4*2/** 除数可能出现不能整除的情况,会报错,* 使用带有三个参数的方法divide(除数,小数点保留后几位,舍入模式)* */// ROUND_CEILING; //向正无穷方向舍入// ROUND_DOWN; //向零方向舍入// ROUND_FLOOR;//向负无穷舍入// ROUND_UNNECESSARY;//计算结果是精确的}
}

  • 格式化
package com.bjsxt;
import com.bjsxt.pojo.Users;import java.math.BigDecimal;
import java.text.NumberFormat;import static java.math.BigDecimal.*;public class Test {public static void main(String[] args) {/** 有一个类NumberFormat的format()方法,可以对BigDecimal对象作为参数* 进行超出16位有效数字进行格式化,* 格式有货币值,百分比值* */BigDecimal a = new BigDecimal(4.4);BigDecimal b = new BigDecimal(0.1111);BigDecimal c = new BigDecimal("5");BigDecimal d = new BigDecimal(3);BigDecimal he = a.add(b);//建立货币格式化NumberFormat currencyInstance = NumberFormat.getCurrencyInstance();//建立百分比格式化NumberFormat percentInstance = NumberFormat.getPercentInstance();percentInstance.setMaximumFractionDigits(3);//百分比的小数点后几位System.out.println(currencyInstance.format(a));System.out.println(currencyInstance.format(he));System.out.println(percentInstance.format(a));System.out.println(percentInstance.format(b));}
}
  • 字符串化
// java中的toPlainString()是一个方法的名字,根据字面意思就是转化成计划的字符串。
//java.math.BigDecimal.stripTrailingZeros()方法
//此方法返回与移除所有尾部零的数值上相等的BigDecimaldouble data = 0.2235000;String s = new BigDecimal(String.valueOf(data)).stripTrailingZeros().toPlainString();System.out.println(s);String s1 = new BigDecimal(data).toPlainString();System.out.println(s1);

BigDecimal——大十进制-货币型-双精度-精确运算相关推荐

  1. Java 中商业运算必备的精确运算类:BigDecimal

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1. 前言 今天群里一个初级开发者问为 ...

  2. 非精确运算和精确运算

    Bug场景 sku价格比较 @Overridepublic boolean checkSKUEqualPrice(ItemDO itemDO) {boolean result = true;List& ...

  3. 单精度和双精度的运算问题

    学习目标: 单精度和双精度的运算问题 问题引出: 当我们在运行如下输出语句时 System.out.println(2.5-0.9); System.out.println(2.4-0.8);Syst ...

  4. 小心!智能合约再爆高危漏洞,两大加密货币直接变废纸!

    小心!智能合约再爆高危漏洞,两大加密货币直接变废纸! 大家都还记得,前一段时间发生的BEC智能合约的安全漏洞问题.近日,智能合约安全问题再次上演,火币Pro发布公告,暂停EDU冲提币业务,随后EDU智 ...

  5. 浮点数相加php,利用php怎么实现一个浮点数精确运算功能

    利用php怎么实现一个浮点数精确运算功能 发布时间:2020-12-15 16:06:03 来源:亿速云 阅读:94 作者:Leah 今天就跟大家聊聊有关利用php怎么实现一个浮点数精确运算功能,可能 ...

  6. python双精度浮点数怎么写_Python双精度浮点数运算并分行显示操作示例

    本文实例讲述了Python双精度浮点数运算并分行显示操作.分享给大家供大家参考,具体如下: #coding=utf8 def doubleType(): ''''' Python中的浮点数是双精度浮点 ...

  7. java怎么进行浮点数运算_【考试经验】Java中实现浮点数的精确运算

    [考试经验]Java中实现浮点数的精确运算 package com.lv; import java.math.BigDecimal; public class Arith { public stati ...

  8. python 双精度浮点_Python双精度浮点数运算并分行显示操作示例

    Python双精度浮点数运算并分行显示操作示例 这篇文章主要介绍了Python双精度浮点数运算并分行显示操作,涉及Python数学运算及显示相关操作技巧,注释备有详尽的说明,需要的朋友可以参考下 #c ...

  9. Java Double类型精确运算解决

    Java中的简单浮点数类型float和double不能够进行运算. 首先我们想到的是四舍五入,Math类中的round方法不能设置保留几位小数,我们只能像这样(例如保留两位) Math.round(v ...

  10. 货币型会员积分设计指南

    货币型会员积分设计指南 一.界定货币型积分 货币型积分: 1)指的是产品在用户达到指定行为后发放的虚拟货币,可以用于在产品内消耗流通,用于兑换(购买)平台提供的福利.特权: 2)主要是区别于成长型的积 ...

最新文章

  1. HTML中的一些知识点
  2. C++函数模板(二)引用
  3. m5310采用芯片 中移物联_联想首发瑞芯微最新智能物联芯片产品
  4. php键值交换,php键值互换时走的一个弯路
  5. mysql cluster 外键_Mysql外键约束
  6. 在计算机领域客观事物的属性表示为数据,数据与信息试题解析
  7. HA集群实现原理 切换 JAVA_HA(一)高可用集群原理
  8. daisy_DAISY:视障人士的Linux兼容文本格式
  9. 查什么攻略?百行 Python 代码告诉你国庆哪些景点爆满!
  10. 【Android】Mac安装EasyTether导致无法识别设备的问题
  11. ios 文本翻转_反转文字的方法_深入浅出 iPhone 开发 (使用 Swift4)_iOS视频-51CTO学院...
  12. APP加密,让你的移动应用更安全!
  13. CoolFire系列讲座 第6讲
  14. 各类任务的数据集大数据库
  15. 接口文档系统 - Yapi
  16. 29.Go异常处理-recover
  17. 虾皮开店难吗,如何判断适不适合入驻虾皮(一)
  18. Vue3的生命周期的使用
  19. 计算机科学与技术专业图书,《计算机科学与技术专业毕业论文选》—甲虎网一站式图书批发平台...
  20. 怎么给图片加滤镜?我来教你图片滤镜怎么调才好看

热门文章

  1. C++:怎样把一个int转成4个字节?
  2. 在html中写python代码的语法和特点-----基于webpy的httpserver
  3. Excel: 如何对Excel2007工作表做统一编辑修改
  4. How to use Emerge
  5. jquery mysql jsp搜索功能_jquery实现的一个提前搜索功能
  6. 拓端tecdat|R语言数量生态学冗余分析RDA分析植物多样性物种数据结果可视化
  7. 拓端tecdat|R语言中使用线性模型、回归决策树自动组合特征因子水平
  8. 拓端tecdat|R语言中GLM(广义线性模型),非线性和异方差可视化分析
  9. 拓端tecdat|用R语言实现神经网络预测股票实例
  10. LeetCode11 盛最多水的容器