早教吧作业答案频道 -->其他-->
javadouble做减法溢出数据库有几个double类型的数字,有正的也有负的0.1*0.1+0.2*0.2+(-0.3)*0.3但结果不是-0.04
题目详情
java double 做减法溢出
数据库有几个double类型的数字,有正的也有负的
0.1*0.1+0.2*0.2+(-0.3)*0.3
但结果不是-0.04
数据库有几个double类型的数字,有正的也有负的
0.1*0.1+0.2*0.2+(-0.3)*0.3
但结果不是-0.04
▼优质解答
答案和解析
import java.math.MathContext;
public class $ {
public static void main(String[] args) {
// 0.1*0.1+0.2*0.2+(-0.3)*0.3
// 0.1*0.1+0.2*0.2-0.3*0.3
BigDecimal a = new BigDecimal(0.1);
a = a.multiply(a, MathContext.DECIMAL32);
BigDecimal b = new BigDecimal(0.2);
b = b.multiply(b, MathContext.DECIMAL32);
BigDecimal c = new BigDecimal(0.3);
c = c.multiply(c, MathContext.DECIMAL32);
a = a.add(b, MathContext.DECIMAL32);
a = a.subtract(c, MathContext.DECIMAL32);
System.out.println(a.doubleValue());
}
}
用BigDecimal计算
import java.math.MathContext;
public class $ {
public static void main(String[] args) {
// 0.1*0.1+0.2*0.2+(-0.3)*0.3
// 0.1*0.1+0.2*0.2-0.3*0.3
BigDecimal a = new BigDecimal(0.1);
a = a.multiply(a, MathContext.DECIMAL32);
BigDecimal b = new BigDecimal(0.2);
b = b.multiply(b, MathContext.DECIMAL32);
BigDecimal c = new BigDecimal(0.3);
c = c.multiply(c, MathContext.DECIMAL32);
a = a.add(b, MathContext.DECIMAL32);
a = a.subtract(c, MathContext.DECIMAL32);
System.out.println(a.doubleValue());
}
}
-0.04
看了 javadouble做减法溢...的网友还看了以下:
汇编A中奇数个1偶数个1可以决定p为0或者1请举几个例子啊我好像发现不是这个样子的 2020-04-09 …
数学函数证明设下面所考虑的函数都是定义在区间(-l,l)上的,证明:(1)两个偶函数的和是偶函数, 2020-06-06 …
一个长为m的相互独立的二进制序列,包含偶数个1的概率是其中第L个比特是1的概率是PL(L是下标,可 2020-07-29 …
概率统计问题,急,推广的二项系数公式(-r,L)=(-1)^L(r+L-1,L)怎么得来的?∞∑( 2020-07-30 …
已知一次函数的图像L经过A(1.3)和B(-1,1),L与一个反比例函数的图像相切,则该反比例函数 2020-08-01 …
证明题关于奇偶性的设下面所考虑的函数都是定义在区间(-l,l)上的;证明:(1)两个偶函数的和是偶 2020-08-01 …
写一个只含字母a、b的多项式,需满足以下条件L(1)五次四项式(2)每一顼的系数为1或-1(写一个 2020-08-02 …
数学……微积分之空间线面求直线L(X-1)/1=Y/1=(Z-1)/-1在面IIX-Y+2Z-1=0 2020-10-31 …
过直线l外两点作与直线l平行的平面,可以作()A.1个B.1个或无数个C.0个或无数个D.0个、1个 2020-11-03 …
直线l外有两点A、B,若要在l上找一点,使这点与点A、B的距离相等,这样的点能找到()A.0个B.1 2020-11-06 …