当前位置: 首页 > news >正文

江苏 建设 招标有限公司网站网站设计公司西安

江苏 建设 招标有限公司网站,网站设计公司西安,云县网站建设 云县网,网页制作全部过程系列文章目录 java中BigDecimal的介绍及使用#xff0c;BigDecimal格式化#xff0c;BigDecimal常见问题java中BigDecimal的介绍及使用(二) 文章目录 系列文章目录一、前言二、BigDecimal提供的方法2.1、stripTrailingZeros() 去除小数尾部所有的02.2、int signum()2.3、int…系列文章目录 java中BigDecimal的介绍及使用BigDecimal格式化BigDecimal常见问题java中BigDecimal的介绍及使用(二) 文章目录 系列文章目录一、前言二、BigDecimal提供的方法2.1、stripTrailingZeros() 去除小数尾部所有的02.2、int signum()2.3、int scale()2.4、intValue()2.5、intValueExact()2.6、unscaledValue()2.7、remainder(BigDecimal divisor)2.8、divideAndRemainder(BigDecimal divisor) 三、进阶3.1、获取BigDecimal整数部分、小数部分、整数位数、小数位数 一、前言 在上一篇文章 《java中BigDecimal的介绍及使用BigDecimal格式化BigDecimal常见问题 》 中主要介绍了BigDecimal的加减乘除运算及格式化方面的使用本篇主要介绍其他相关的内容。 二、BigDecimal提供的方法 加减乘除等常用的方法在上一篇中已经提过本篇不再重复写主要讲一下其他可能用到的方法 方法含义BigDecimal stripTrailingZeros()去除小数尾部所有的0并返回一个BigDecimal类型的数据,不能保证不是科学计数法int signum()返回BigDecimal的正负号 1正数 0零 -1负数int scale()该方法返回此BigDecimal的小数位数。对于零或正值小数位数是小数点右边的位数。对于负值数字的未标度值乘以十即标度取反的幂。int intValue()返回int数值小数点后面的数值直接省略int intValueExact()返回int数值小数点后面的数值直接省略若BigDecimal对象的值超出int类型取值范围抛出异常BigInteger toBigInteger()返回BigInteger数值BigInteger理论上是负无穷到正无穷之间BigInteger unscaledValue()此方法返回一个BigInteger其值是此BigDecimal值的未缩放值。divide(BigDecimal)BigDecimal对象中的值相除返回BigDecimal对象。该方法可能会遇到无限精度问题会抛出异常使用时需注意。详细见上一篇文章的无限精度的坑BigDecimal remainder(BigDecimal divisor)返回当前BigDecimal对象除以divisor后的余数。 被除数divisor不能是0否则抛出异常BigDecimal[] divideAndRemainder(BigDecimal divisor)返回当前BigDecimal对象除以divisor后的商和余数以数组形式返回。被除数divisor不能是0否则抛出异常 int、BigInteger、long取值范围 类型取值范围int-2,147,483,648 到 2,147,483,647long-9223372036854775808~9223372036854775807 BigInteger 任意大的整数其取值范围在负无穷到正无穷之间原则上是只要你的计算机的内存足够大可以有无限位的, 当数值超过long之后就要用BigInteger进行处理了 2.1、stripTrailingZeros() 去除小数尾部所有的0 BigDecimal stripTrailingZeros() 去除小数尾部所有的0并返回一个BigDecimal类型的数据,不能保证不是科学计数法 0.20—0.2 10.00—10 100—100 public static void main(String[] args) {BigDecimal a new BigDecimal(10.000);BigDecimal b new BigDecimal(100000);BigDecimal c new BigDecimal(10.10);System.out.println(a.stripTrailingZeros().toPlainString());//10System.out.println(b); //100000System.out.println(b.stripTrailingZeros()); //1E5 注意返回的值可能已经是个科学计数法了System.out.println(c.stripTrailingZeros().toPlainString());//10.1 }当stripTrailingZeros()返回科学计数法时可以通过toPlainString()方法不使用科学计数法进行输出。 2.2、int signum() int signum() 返回BigDecimal的正负号 1正数 0零 -1负数 用于判断BigDecimal对象是正数负数还是零 public static void main(String[] args) {BigDecimal a new BigDecimal(10);BigDecimal b new BigDecimal(-5);BigDecimal c new BigDecimal(0);System.out.println(a.signum());//1System.out.println(b.signum());//-1System.out.println(c.signum());//0 }2.3、int scale() int scale() 该方法返回此BigDecimal的小数位数。 对于零或正值小数位数是小数点右边的位数。对于负值数字的未标度值乘以十即标度取反的幂。 注意当BigDecimal的对象为科学计数法时scale的值不一定等于小数位数 public static void main(String[] args) {BigDecimal a new BigDecimal(10.00);BigDecimal b new BigDecimal(-5.1);BigDecimal c new BigDecimal(-174);BigDecimal d new BigDecimal(-1234500);System.out.println(a.scale());//2System.out.println(b.scale());//1System.out.println(c.scale());//0System.out.println(dd.scale());//-12345000System.out.println(d.stripTrailingZeros()d.stripTrailingZeros().scale());//-1.2345E6 -2 注意当BigDecimal的对象为科学计数法时scale的值不一定等于小数位数 }2.4、intValue() int intValue() 返回int数值小数点后面的数值直接省略 注意 int类型的取值范围是-2,147,483,648 到 2,147,483,647所以当超过这个数值时会从负值开始继续转换可以使用intValueExact()方法当超出int取值范围后会抛异常 public static void main(String[] args) {BigDecimal a new BigDecimal(2999999999.99);BigDecimal b new BigDecimal(2147483649);System.out.println(a.intValue());//-1294967297System.out.println(b.intValue());//-2147483647 }2.5、intValueExact() int intValueExact() 返回int数值小数点后面的数值直接省略若BigDecimal对象的值超出int类型取值范围抛出异常 int取值范围是-2,147,483,648 到 2,147,483,647当超过这个范围时抛出异常 以下示例可以看出intValue() 与intValueExact() 的区别 public static void main(String[] args) {BigDecimal a new BigDecimal(2147483648);BigDecimal b new BigDecimal(2147483648);System.out.println(a.intValue());//-2147483648System.out.println(b.intValueExact());//抛异常 }执行结果 -2147483648 Exception in thread main java.lang.ArithmeticException: Overflowat java.math.BigDecimal.intValueExact(BigDecimal.java:3152)at com.ruoyi.common.utils.money.Test1.main(Test1.java:12)2.6、unscaledValue() BigInteger unscaledValue() 此方法返回一个BigInteger其值是此BigDecimal值的未缩放值。 总结一下就是返回没有小数点的金额该值计算(此* 10this.scale())。如10.235–10235 0.32—32 public static void main(String[] args) {BigDecimal a new BigDecimal(10.235);BigDecimal b new BigDecimal(0.32);System.out.println(a.unscaledValue());//10235System.out.println(b.unscaledValue());//32 }2.7、remainder(BigDecimal divisor) BigDecimal remainder(BigDecimal divisor) | 返回当前BigDecimal对象除以divisor后的余数。被除数divisor不能是0否则抛出异常 public static void main(String[] args) {BigDecimal a new BigDecimal(10);System.out.println(a.remainder(new BigDecimal(2)));// 10%2 0a new BigDecimal(10.23);System.out.println(a.remainder(new BigDecimal(2)));//10.23%2 0.23System.out.println(a.remainder(new BigDecimal(0)));//被除数不能是0否则抛出异常 }执行结果如下 2.8、divideAndRemainder(BigDecimal divisor) BigDecimal[] divideAndRemainder(BigDecimal divisor) 返回当前BigDecimal对象除以divisor后的商和余数以数组形式返回。被除数divisor不能是0否则抛出异常 注意返回的数值会有小数点位数的问题 10.00 ➗ 2 5.00 10.00 ➗ 2.000 5 public static void main(String[] args) {BigDecimal a new BigDecimal(10);BigDecimal[] arr a.divideAndRemainder(new BigDecimal(2));System.out.println(Arrays.asList(arr));//[5, 0]a new BigDecimal(10.23);arr a.divideAndRemainder(new BigDecimal(2));System.out.println(Arrays.asList(arr));//[5.00, 0.23]a new BigDecimal(10.23);arr a.divideAndRemainder(new BigDecimal(2.000));System.out.println(Arrays.asList(arr));//[5, 0.230]System.out.println(a.divideAndRemainder(new BigDecimal(0)));//被除数不能是0否则抛出异常 }三、进阶 3.1、获取BigDecimal整数部分、小数部分、整数位数、小数位数 方式一 个人觉得用这种方式获取BigDecimal整数部分、小数部分、整数位数、小数位数比较方便 public static void main(String[] args) {BigDecimal a new BigDecimal(10.23);String money a.toPlainString();String integer String.valueOf(a.toBigInteger());//整数部分String point money.split(\\.).length1?:money.split(\\.)[1]; //小数部分System.out.println(integer);//10System.out.println(point);//23 }
http://www.w-s-a.com/news/88293/

相关文章:

  • 网站开发公司+重庆wordpress自定义搜索界面
  • 梅州南站学校官网
  • 网站变灰代码 所有浏览器企业邮箱域名怎么填写
  • 网站建设哪好旅行社网站模板
  • 网站开发发展存在的问题交换链接营销的经典案例
  • 烟台高端网站建设公司福田市网站建设推广
  • 做网站如何保证询盘数量智慧城市
  • 大连网站平台研发wordpress更改地址
  • 做标书要不要做网站南昌网站排名优化费用
  • 网站内容如何自动关联新浪微博万网域名信息
  • 网站出售网络推广服务费计入什么科目
  • 宁波咨询网站设计西安网站制作开发
  • 深圳市专注网站建设全网营销网络推广
  • 如何快速建设网站虚拟空间软件
  • 一个虚拟主机可以做几个网站免费软件下载中心
  • 美工培训网站中国建筑网官网手机版
  • 创建网站花钱吗谁能给个网址免费的
  • 宁波教育学会网站建设网站建设价格由什么决定
  • 北京定制网站价格wordpress上传pdf文档
  • 网站建设费税率dz论坛seo设置
  • 推销网站话术商业网站开发与设计
  • 金华网站建设哪个网站做欧洲旅行比较好
  • 东莞市住房和城乡建设局网站trswcm网站建设
  • 郑州做网站企业h5编辑器免费版
  • 加强公司窗口网站建设陕西省外省入陕建筑信息平台
  • 成都网站优化实战大连企业网站建设模板
  • 服务器硬件影响网站速度seo网站推广价格
  • 学院网站开发竞争对手分析买网站送域名
  • 手机网站 jsp个人网页制作成品代码五个页面
  • ppt做长图网站wordpress文章页面图片自动适应