java的BigDecimal

一般设计到高精度的加法或乘法或者阶乘的求和积都会用到BigDecimal这个类。

import java.util.*;
import java.math.BigDecimal;
import java.lang.*;
public class Main {

public static   BigDecimal fun2(int n)
    {
          BigDecimal result = new BigDecimal(1);
                  BigDecimal a;
                  
                  for(int i=2;i<=n;i++)
                  {
                      a= new  BigDecimal(i);
                     result = result.multiply(a);
                  }
             
        
        return result;
    }public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
         int n=in.nextInt();
          System.out.print(n+"!"+"="+fun2(n));
          
          
    }

}

运行结果:

用BigDecimal 一般求比较的数,如果求3!或10!也可以递归来实现。

code 如下:

ublic static int fun(int n)
    {
        if(n==1)
        {
            return 1;
        }
        else
        {
            return n*fun(n-1);
        }
    }

这是用递归求阶乘的方法。不适用求大数的。

对于大数的加法或者乘法或者就阶乘也可以数组来做,不过比较复杂。用BigDecimal方便。

如果有更好的方法希望你们来提供。

时间: 2024-10-12 23:01:08

java的BigDecimal的相关文章

java中BigDecimal的学习

干着java的活,但是看的都是一些偏底层的东西(或者我根本就没有看),有点荒废了java的学习. 最近一直在用到一个类是BigDecimal,但都是模棱两可地在那儿用,并没有深入研究这个类的细节,感觉不能再拖了. BigDecimal,从名字来看就是进行大数运算的,不光这样,还广泛用于小数的精确运算. 当你接触到和钱有关的计算的时候,这个类还是很有用滴. 先来看一个例子 1 package com.tuhooo.bigdecimal; 2 3 /** 4 * Created by tuhooo

java之BigDecimal类

1.BigDecimal类概述及其构造方法 由于在运算的时候,float类型和double类型很容易丢失进度,所以,为了能够精确的表示.计算浮点数,java提供了BigDecimal类 BigDecimal类是不可变得.任意精度的有符号是进制数 2.构造方法及成员方法 package com; import java.math.BigDecimal; /**  * BigDecimal类  * 由于在运算的时候,float类型和double类型很容易丢失精度.所以,为了能精确的表示.计算浮点数.

MySQL分段统计SQL写法 与 Mybatis 报错:java.math.BigDecimal cannot be cast to java.lang.Integer

mysql> select -> sum(case when score<60 then 1 else 0 end) as '<60', -> sum(case when score>=60 and score<=69 then 1 else 0 end) as '60~69', -> sum(case when score>=70 and score<=79 then 1 else 0 end) as '70~79', -> sum(ca

数据转换bug花了半天时间 Java.math.BigDecimal cannot be cast to java.lang.String

从数据库取出一个 Count函数 统计的值 在代码中要转成Integer类型的时候 Integer.parseInt((String)map.get("ID_")) 报了一下错误: Java.math.BigDecimal cannot be cast to java.lang.String 解决方法: Object ob = map.get("ID_");先将数据转成 Integer.parseInt(ob.toString()); http://blog.csd

Java中BigDecimal的8种舍入模式是怎样的

Java中BigDecimal的8种舍入模式是怎样的?下面长沙欧柏泰克软件学院和大家一起来学习下吧:  java.math.BigDecimal 不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成. 如果为零或正数,则标度是小数点后的位数.如果为负数,则将该数的非标度值乘以10的负scale次幂. 因此,BigDecimal表示的数值是(unscaledValue × 10-scale). 与之相关的还有两个类: java.ma

java.lang.ClassCastException:java.math.BigDecimal cannot be cast to java.lang.String

1.错误描述 2.错误原因 在hibernate映射文件中,数据库字段id是字符串类型,而在Java封装类中定义成java.math.BigDecimal,导致出错 3.解决办法 将Java封装类中的id属性修改成String类型

Java使用BigDecimal解决精确计算的问题

最近有人在微信上给我发了一个数学题目,如下图: 我看了之后感觉很是简单,但是却想了半天才解出来.解出来后我想到了用程序再解一遍,然而精确计算的问题却让人头疼不已. 解题思路: 思路其实很简单,暴力求解就可以,但是当你写了一个四重for循环后你会发现解不出来.由此考虑到结果可能是小数,便把增量改成了float类型,每次自增0.1. 当你写完满心欢喜地运行的时候会发现还是出不来结果.再改成double类型也同样是不行. 这是因为java中float类型相加是把十进制转化为二进制后相加然后把二进制结果

java.math.BigDecimal cannot be cast to java.lang.String &nbsp; ----解决方案

今天在开发的时候遇到了一个问题,在此记录一下,问题的大概意思就是类型不一致不能进行强转 代码如下: rolf.setFuncd((String) rece.get("FUN_CD"));//强转 rolf.setFunid((String) rece.get("FUN_ID")); //强转 rolf.setFunnm((String) rece.get("FUN_NM")); //强转 因为我第二段的代码Orc数据库的字段类型是number,而

Java.math.BigDecimal类

java.math.BigDecimal 类提供用于算术,刻度操作,舍入,比较,哈希算法和格式转换操作. toString()方法提供BigDecimal的规范表示.它使用户可以完全控制舍入行为. 提供用于操作BigDecimal规模两种类型的操作: 缩放/舍入操作 小数点移动操作. 此类及其迭代器实现Comparable接口的所有可选方法. 点击链接查看更多