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

同ip网站有什么影响河南郑州最新事件

同ip网站有什么影响,河南郑州最新事件,建设银行官方网站-云服务,外贸客户搜索软件系列文章目录 java中BigDecimal的介绍及使用,BigDecimal格式化,BigDecimal常见问题java中BigDecimal的介绍及使用(二) 文章目录 系列文章目录一、前言二、BigDecimal提供的方法2.1、stripTrailingZeros() 去除小数尾部所有的02.2、int signum()2.3、int…

系列文章目录

  • java中BigDecimal的介绍及使用,BigDecimal格式化,BigDecimal常见问题
  • java中BigDecimal的介绍及使用(二)

文章目录

  • 系列文章目录
  • 一、前言
  • 二、BigDecimal提供的方法
    • 2.1、stripTrailingZeros() 去除小数尾部所有的0
    • 2.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,647
long-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()); //1E+5   注意:返回的值可能已经是个科学计数法了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(d+"====="+d.scale());//-1234500=====0System.out.println(d.stripTrailingZeros()+"====="+d.stripTrailingZeros().scale());//-1.2345E+6=====  -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("\\.").length==1?"":money.split("\\.")[1]; //小数部分System.out.println(integer);//10System.out.println(point);//23
}
http://www.hkea.cn/news/909409/

相关文章:

  • 哈尔滨招标信息网网站推广优化排名教程
  • 个人可以建论坛网站吗福清网络营销
  • 济南做网站优化价格百度推广网站一年多少钱
  • 做网上商城网站哪家好杭州seo靠谱
  • 做营销网站制作关键词优化课程
  • 网站移动终端建设口碑营销成功案例
  • 美国做试管婴儿 网站推广普通话宣传语
  • 网站备案信息查询系统软文发布平台媒体
  • 泊头哪给做网站的好制作网页的教程
  • 漳州建设银行网站首页在百度上打广告找谁
  • 网站免费建站k网络营销策划方案书
  • 网站建设类公网店推广的作用
  • 安平做网站除了百度指数还有哪些指数
  • 做网站公司 蓝纤科技知乎怎么申请关键词推广
  • 临沂免费做网站发表文章的平台有哪些
  • 网站推广的方式包括哪些广西网站建设制作
  • 杭州营销网站建设东莞网站建设哪家公司好
  • 企业做营销型网站手机如何制作网页
  • 连云港网站关键词优化seo自学教程
  • 网站全站出售淘宝关键词排名怎么查询
  • 龙口市规划建设局网站查询收录
  • 学校网站建设注意什么东莞网站营销推广
  • 网站设计模板是什么百度网盘人工客服电话多少
  • wordpress文章收缩长春seo优化企业网络跃升
  • 网站地图调用希爱力双效片骗局
  • 珠海网站建设维护友情链接买卖代理
  • 武汉企业网站推广外包网络广告营销案例分析
  • 深圳哪里有做网站的汕头seo排名收费
  • 如何用腾讯云主机做网站株洲发布最新通告
  • 中国建设银行官网站下载信息流广告投放公司