已有101人关注
java大数字运算疑惑
发表在Java图书答疑 2019-11-07 《Java从入门到精通(第4版)》第9章 数字处理类
是否精华
版块置顶:

老师您好:从网上购买的《Java从入门到精通》第五版,看到大数据处理这里个问题不解,望解惑。

问题在170页,9.6实践与练习第二题,求圆的面积

import java.math.BigDecimal;

import java.math.BigInteger;

import java.text.DecimalFormat; 

public class CircleArea {

static BigDecimal Area1(double value) {

BigDecimal r=new BigDecimal(value);

BigDecimal AREA=(new BigDecimal(Math.PI)).multiply(r.pow(2));      //这行代码执行时没有提示错误,我看课本里都是用的Double.toString(Math.PI))这种类型

return AREA;

}

static BigInteger Area2(String value) {

BigInteger r=new BigInteger(value);

BigInteger AREA=(new BigInteger(Double.toString(Math.PI))).multiply(r.pow(2));    //Double.toString(Math.PI))如果改成“1”,程序可正常执行

return AREA;

}

public static void main(String[] args) {

System.out.println("用BigDecimal类求圆的面积为:"+new DecimalFormat("#.#####").format(Area1(1)));

System.out.println("用BigInteger类求圆的面积为:"+new DecimalFormat("#.#####").format(Area2("1")));

}

}

代码编写完,没有提示错误,但运行的时候BigDecimal类没问题,BigInteger会报错,试着找了下错误在Double.toString(Math.PI) 这一行。试着替换成字符串“1”,运行的时候正常。Double.toString(Math.PI) 这句话不就是把double型转换成字符串形式的吗,跟“1”是一种类型,为啥还会报错?想不明白为什么。另外上面BigDecimal Area1方法中Math.PI换成Double.toString(Math.PI) 也可以正常执行,我看课本里都是用的Double.toString(Math.PI))这种类型,顺便也想问下课本中讲BigDecimal构造方法中参数有double型和String型都可以,而课本中方法参数是double型,在我看来却多此一举的用Double.toString(value1)转换成String型,是不是用double型会有什么隐藏的弊端,才会这么写。

2019-11-07 13:30:10编辑
分享到:
精彩评论 2
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-11-07
沙发

BigInteger是整数,你的Double.toString(Math.PI)是浮点数字符串,有小数点所以格式转换异常。超大小数用BigDecimal。

最常使用的构造方法参数其实是字符串,但字符串格式容易写错,还看不出来。课本使用double类型,是为了避免出现格式错误。

stq20192019
学分:62 LV3
2019-11-07
板凳

根号申 发表于2019-11-07 13:54

BigInteger是整数,你的Double.toString(Math.PI)是浮点数字符串,有小数点所以格式转换异常。超大小数用BigDecimal。

最常使用的构造方法参数其实是字符串,但字符串格式容易写错,还看不出来。课本使用double类型,是为了避免出现格式错误。

明白了,谢谢。

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照