关于BigDecimal的divide()方法。。。求解。。。。。。。。。。。。。。。。。

importjava.math.*;publicclassTest{publicstaticvoidmain(String[]args){BigDecimala=newB... import java.math.*;
public class Test {
public static void main(String[] args) {
BigDecimal a=new BigDecimal(0.5);
BigDecimal b=new BigDecimal(0.2);
System.out.println(a.divide(b));
}
}
为什么会出错啊?
0.5除以0.2 不就是2.5么?
错误信息:
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
展开
 我来答
帐号已注销
2021-09-21 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:167万
展开全部

BigDecimal的除法,需要指定计算答案的精度,那样肯定会报异常。

MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);

BigDecimal a = new BigDecimal(0.5);

BigDecimal bd1 = new;

BigDecimal("30000000000000000000000000000000000000000000000000000000000");

BigDecimal bd2 = new BigDecimal(3);

//MathContext,第一个参数表示你要保留几位小数,第二参数表示最后一位是取顶。

构造方法

BigDecimal一共有4个构造方法:

BigDecimal(int) 创建一个具有参数所指定整数值的对象。

BigDecimal(double) 创建一个具有参数所指定双精度值的对象。(不建议采用)

BigDecimal(long) 创建一个具有参数所指定长整数值的对象。

BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。

子晓聊技术
推荐于2017-09-30 · TA获得超过1237个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:421万
展开全部
BigDecimal的除法,需要指定计算答案的精度,你那样肯定会报异常。虽然你知道答案为2.5,但计算机不知道你的精度为多少,会抛异常的。
我给你写一段,

MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);
//精度为2,舍入模式为大于0.5进1,否则舍弃。
BigDecimal a = new BigDecimal(0.5);
BigDecimal b = new BigDecimal(0.2);
System.out.println(a.divide(b,mc));
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
artintin
2012-09-17 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2879万
展开全部
0.5,0.2加双引号,直接出答案2.5
也可以按楼上的方法做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
OOADP_SAP
2012-11-02
知道答主
回答量:10
采纳率:0%
帮助的人:4万
展开全部
BigDecimal 的 divide 是可以指定精度运算的:

BigDecimal a=new BigDecimal(0.5);
BigDecimal b=new BigDecimal(0.2);
System.out.println( a.divide(b) , 2 , BigDecimal.ROUND_HALF_UP );
// ROUND_HALF_UP是BigDecimal的一个常量,表示进行四舍五入的操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱唉哎皑
2017-09-11
知道答主
回答量:2
采纳率:0%
帮助的人:1759
展开全部
BigDecimal bigDecimal1 = new BigDecimal(100.0);
BigDecimal bigDecimal2 = new BigDecimal(33.0);
BigDecimal b = bigDecimal1.divide(bigDecimal2,0,BigDecimal.ROUND_DOWN);
取整数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式