推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

如何使java中double类型不以科学计数法表示

   2023-08-23 网络整理佚名2180
核心提示:如果你没有认为第一个会输出1.JDK的描述:1、参数类型为的构造方法的结果有一定的不可预知性。有人可能认为在Java中写入(0.(或者说对于该情况,不能表示为任何有限长度的二进制小数)。因此,比较而言,通常建议优先使用构造方法。3、当必须用作的源时,请注意,此构造方法提供了一个准确转换;它不提供与以下操作相同的结果:先使用.()方法,然后使用()构造方法,将转换为。要获取该结果,请使用()方法。

=(1.22);

.out.(" 值为:"+ );

=(“1.22”);

.out.(" 值为:"+ );

你认为输出会是什么? 如果你没想到第一个会输出1.22,那么恭喜你,你猜对了,输出如下:

与:1。

值为:1.22

JDK的说明: 1、参数类型为的构造方法的结果具有一定的不可预测性。 人们可能会认为在 Java 中编写 (0.1) 会精确等于 0.1(1 的未缩放值,其小数位数为 1),但实际上它等于 0。这是因为 0.1 不能精确地表示为(或者,就此而言,作为任何有限长度的二进制分数)。 因此,传递给构造函数的值将不会完全等于 0.1(尽管显然等于该值)。

2. 另一方面,构造函数是完全可预测的:write("0.1") 将创建一个恰好等于预期 0.1 的值。 因此,相比之下,一般建议先使用构造函数方法。

3. 当必须将其用作源时,请注意此构造函数提供了精确的转换; 它提供的结果与使用 .() 方法和 () 构造函数不同,后者将转换为 . 要获得结果,请使用 () 方法。

用于精确运算(实现加、减、乘、除)

加、减、乘、除

add(value);//相加

( 价值); //减法

( 价值); // 乘法

( 价值); //分配

public class Arith {

public static double add(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.add(b2).doublevalue();
}

public static double sub(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.subtract(b2).doublevalue();
}

public static double mul(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.multiply(b2).doublevalue();
}

public static double div(double value1,double value2,int scale) throws IllegalAccessException{
//如果精确范围小于0,抛出异常信息
if(scale<0){ 
  throw new IllegalAccessException("精确度不能小于0");
}
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.divide(b2, scale).doublevalue();
}
}

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON