导航:首页 > 编程语言 > java中double类型相加

java中double类型相加

发布时间:2025-10-03 04:59:09

1. java int double 加减法 基本类型运算问题

1.-2.8421709430404007E-14表示-2.8421709430404007乘以10的-14次方,计算机能准确表示十进制的整数,但不能准确表示十进制小数。System.out.println(150.0+0+183.28-0-183.28-150.0);150.0+0+183.28-0-183.28-150.0的结果为0.00000000000...,只不过你的输出结果为double型,精度比较高,没有超出打印函数(println之类的)的默认精度而已。

2.System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));中将((150.00)+0.00+(183.28))作为个运算单元,二个括号内的运算的结果肯定一样,与精度无关。结果当然为0。

3.用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));(150.0+0+183.28-0-183.28-150.0)的结果为0.00000000...,转换成long,舍弃小数位,结果自然为0;

4.System.out.println(150.0F+0+183.28F-0-183.28F-150.0F); 运算结果为float型,超出打印函数(println之类的)的默认精度,截取下来为0。

不知道解释的你满意不?

2. java用double和float进行计算有时候精度不准确怎么办

在大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中,这种问题是非常严重的。

在《Effective Java》中提到一个原则,那就是float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类可以解决上述问题,实例代码如下:

packageex;

importjava.math.*;

publicclassBigDecimalDemo{
publicstaticvoidmain(String[]args){
System.out.println(ArithUtil.add(0.01,0.05));
System.out.println(ArithUtil.sub(1.0,0.42));
System.out.println(ArithUtil.mul(4.015,100));
System.out.println(ArithUtil.div(123.3,100));
}
}

classArithUtil{
privatestaticfinalintDEF_DIV_SCALE=10;

privateArithUtil(){}
//相加
publicstaticdoubleadd(doubled1,doubled2){
BigDecimalb1=newBigDecimal(Double.toString(d1));
BigDecimalb2=newBigDecimal(Double.toString(d2));
returnb1.add(b2).doubleValue();

}
//相减
publicstaticdoublesub(doubled1,doubled2){
BigDecimalb1=newBigDecimal(Double.toString(d1));
BigDecimalb2=newBigDecimal(Double.toString(d2));
returnb1.subtract(b2).doubleValue();

}
//相乘
publicstaticdoublemul(doubled1,doubled2){
BigDecimalb1=newBigDecimal(Double.toString(d1));
BigDecimalb2=newBigDecimal(Double.toString(d2));
returnb1.multiply(b2).doubleValue();

}
//相除
publicstaticdoublediv(doubled1,doubled2){

returndiv(d1,d2,DEF_DIV_SCALE);

}

publicstaticdoublediv(doubled1,doubled2,intscale){
if(scale<0){
("");
}
BigDecimalb1=newBigDecimal(Double.toString(d1));
BigDecimalb2=newBigDecimal(Double.toString(d2));
returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

}
阅读全文

与java中double类型相加相关的资料

热点内容
手机上怎么把电影字幕文件 浏览:559
微信群里文件最大限量多少 浏览:134
js屏蔽鼠标右键的代码 浏览:660
301医院app 浏览:337
java注解大全 浏览:531
怎么删除注册表里的数据 浏览:482
黑莓安装版本区别 浏览:180
java中double类型相加 浏览:29
手机传文件电视 浏览:205
nodejs中间层 浏览:237
如何解决网络的信号问题 浏览:490
es文件浏览器本地视频 浏览:354
vba打开指定文件夹 浏览:815
可编程控制器可以应用于哪些领域 浏览:372
分栏文件夹 浏览:481
网络上apple是什么意思 浏览:356
如何合并带括号的数据 浏览:62
rm970固件升级 浏览:617
喜马拉雅app怎么设置关闭广告 浏览:453
java远程连接linux读取文件 浏览:921

友情链接