「java小数加法」js小数加法

博主:adminadmin 2022-11-28 01:33:08 47

今天给各位分享java小数加法的知识,其中也会对js小数加法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

关于Java 小数(浮点型)相加

float的有效精度只有7位,超过了就改为double,不然无法精确运算。

double Java里两个二位小数相加,会得到小数点后很多位,这是double的缺点,你可以使用BigDecimal 来精确运算。例子:

import java.math.BigDecimal;

public class test {

 public static void main(String[] args) {

  double kk = 3.14;   

  kk += 0.37;    

  System.out.println(kk);

  BigDecimal b1 = new BigDecimal("3.14");

  BigDecimal b2 = new BigDecimal("0.37");

  BigDecimal b3 = b1.subtract(b2);

  BigDecimal b4 = b1.add(b2);

  System.out.println(b3);

  System.out.println(b4); 

 }

}

java小数加法

System.out.printf("%.2f\n",0.9+0.9+0.1+0.5);//用类似c语言的格式输出

System.out.format("%.2f\n", 0.9+0.9+0.1+0.5);//java.util.Formatter包中的format方法格式输出

System.out.format("%1$.2f", 0.9+0.9+0.1+0.5);//1$代表第一个参数.2f代表精确到小数点后2位

2.40

2.40

2.40

程序输出结果均为2.40

建议多查API

Java里两个二位小数相加,会得到小数点后很多位。

DOUBLE 最好不要直接操作,除法有问题(精度丢失)。

送你个DOUBLE操作类

public class DoubleOperationUtil {

//默认除法运算精度

private static final int DEF_DIV_SCALE = 10;

//这个类不能实例化

private DoubleOperationUtil(){

}

/**

* 提供精确的加法运算。

* @param v1 被加数

* @param v2 加数

* @return 两个参数的和

*/

public static double add(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.add(b2).doubleValue();

}

/**

* 提供精确的减法运算。

* @param v1 被减数

* @param v2 减数

* @return 两个参数的差

*/

public static double sub(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.subtract(b2).doubleValue();

}

/**

* 提供精确的乘法运算。

* @param v1 被乘数

* @param v2 乘数

* @return 两个参数的积

*/

public static double mul(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.multiply(b2).doubleValue();

}

/**

* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到

* 小数点以后10位,以后的数字四舍五入。

* @param v1 被除数

* @param v2 除数

* @return 两个参数的商

*/

public static double div(double v1,double v2){

return div(v1,v2,DEF_DIV_SCALE);

}

/**

* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指

* 定精度,以后的数字四舍五入。

* @param v1 被除数

* @param v2 除数

* @param scale 表示表示需要精确到小数点以后几位。

* @return 两个参数的商

*/

public static double div(double v1,double v2,int scale){

if(scale0){

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* 提供精确的小数位四舍五入处理。

* @param v 需要四舍五入的数字

* @param scale 小数点后保留几位

* @return 四舍五入后的结果

*/

public static double round(double v,int scale){

if(scale0){

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

BigDecimal b = new BigDecimal(Double.toString(v));

BigDecimal one = new BigDecimal("1");

return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

}

为什么JAVA编写计算器算小数加法时会出错?

因为计算机是二进制的,所以在表示小数时是0.5,0.25,0.125这种样式的,而1.2和2.4是不可能用这种方式表示出来的,所以在计算机表示他们时,你可以理解为他们变成了“无限循环小数”,而java当中不管是double还是float,很明显都有固定位数的,碰到这种“无限“位的只能截取在他们范围之内的位数,也就是说截完之后的数字只是接近1.2或者2.4而不等于他们,你这样加起来也只是接近3.6而不等于3.6,至于到底用3.6还是3.59999表示,取决于在两者之间更接近谁。

java中怎么让小数点之间相加减?

环形面积:R²π-r²π=12.56平方厘米

R²π=12.56+r²π

阴影部分面积:R²π/4-r²=12.56/4+r²(π/4-1)=3.14-0.215r²(平方厘米)

关于java小数加法和js小数加法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。