当前位置 : 主页 > 编程语言 > java >

有关Java大浮点数BigDecimal的简单使用[连续更新]

来源:互联网 收集:自由互联 发布时间:2022-07-17
Java大浮点数​​BigDecimal​​的精度可以认为是无限的 ​​BigDecimal​​​ 里面的​​pow()​​​的复杂度是快速幂的复杂度​​log​​ ​​BigDecimal.pow()​​ 里面的参数是一个整数,


  • Java大浮点数​​BigDecimal​​的精度可以认为是无限的
  • ​​BigDecimal​​​ 里面的​​pow()​​​的复杂度是快速幂的复杂度​​log​​
  • ​​BigDecimal.pow()​​ 里面的参数是一个整数,
  • ​​BigDecimal​​​的构造方式和​​BigInteger​​ 类似
  • ​​BigDecimal​​​ 保留小数的方法比较多,一般情况下下保留到小数点后​​x(int)​​​位的情况下,可以调用方法​​setScale​​
  • 在多次操作之后,数据的长度可能比较大,所以说运算起来就会减慢速度,所以说可能会导致​​TLE​​
  • 某示例代码如下:

    import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.math.RoundingMode;
    import java.util.Scanner;

    public class Main {
    public static int a[] = new int[100007];
    public static BigDecimal b[] = new BigDecimal[100007];
    public static void main(String[] args) {
    Scanner cin = new Scanner(System.in);
    int n = cin.nextInt();
    for(int i=1;i<=n;i++) a[i] = cin.nextInt();
    BigDecimal e = BigDecimal.valueOf(Math.E);
    BigDecimal sum = BigDecimal.valueOf(0.0);
    for(int i=1;i<=n;i++){
    sum = sum.add(e.pow(a[i]));
    }
    sum = sum.setScale(10, RoundingMode.HALF_UP);///小数点保留到十位,舍入方式是四舍五入
    for(int i=1;i<=n;i++){
    b[i] = e.pow(a[i]).divide(sum);
    }
    for(int i=1;i<=n;i++){
    System.out.print(b[i].setScale(10));
    if(i != n) System.out.print(" ");
    }
    }
    }
    /**
    5

    * **/


    上一篇:膜拜(离散化差分模板题)
    下一篇:没有了
    网友评论