Java里面BigDecimal.divide()方法能不能实现保留小数点前后共35位这样的操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java里面BigDecimal.divide()方法能不能实现保留小数点前后共35位这样的操作相关的知识,希望对你有一定的参考价值。

就是两个数相除以后,除不尽的情况下可以保留小数点前后一共35位的情况,当然如果小数点前面的位数已经达到35位就会省略小数点后面的位数。。。。。

没有这样的方法,你自己封装一个就行了啊,把结果转成35位就行了追问

我不会啊,会的话就不提问了

追答

BigDecimal bd1 = new BigDecimal("30000000000000000000000000000000000000000000000000000000000");
BigDecimal bd2 = new BigDecimal(3);
//MathContext,第一个参数表示你要保留几位小数,第二参数表示最后一位你是取顶,还是取底,还是四舍五入等,自己稍微看下就知道了
System.out.println(bd1.divide(bd2, new MathContext(35, RoundingMode.HALF_UP)).toPlainString());
这个是BigDecimal自带的方法,但是有个地方不能满足你,比如30/3,他就只输出10,不会输出为10.00000000000000.如果你需要的话,可以再帮你改一下

参考技术A 实现不了,只能做到精确到几位小数,如果要达到你的要求的话,需要你自己去截取

java的属性只能在类里面 方法外面定义

java的属性只能在类里面 方法外面定义 区别于python;python 既能在类里面(类属性) 又能在方法里面定义属性(实例属性)

 

以上是关于Java里面BigDecimal.divide()方法能不能实现保留小数点前后共35位这样的操作的主要内容,如果未能解决你的问题,请参考以下文章

BigDecimal.divide方法

在 BigDecimal.divide 期间引发 ArithmeticException

BigDecimal类整除报错的解决方案

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res

java里面初始化对象的时候可以重写类里面的函数?

如何在java里面操作excel文件里面的对象