「java小数加法」js小数加法
今天给各位分享java小数加法的知识,其中也会对js小数加法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、关于Java 小数(浮点型)相加
- 2、java小数加法
- 3、Java里两个二位小数相加,会得到小数点后很多位。
- 4、为什么JAVA编写计算器算小数加法时会出错?
- 5、java中怎么让小数点之间相加减?
关于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小数加法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。