java数字运算结果太大,出错怎么办
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数字运算结果太大,出错怎么办相关的知识,希望对你有一定的参考价值。
例如我求100的阶乘 用的int或者long型的保存结果,就出现结果出错了。。是结果超出范围了。。该怎么办呢 学的有限还,请教大大
建议你不要求100的阶乘,谁没事会求那么大的数,纯属吃饱了没事做,你可以控制求阶乘的数,但是如果你一定要求的话,你可以用double ,bigInteger 参考技术A double 双精度浮点型 这个范围更大 参考技术B 用BigInteger,自己搜索吧,没有长度限制。 参考技术C 用int数组保存运算结果,数组大小随便定。这个需要要编程了。 参考技术D BigDecimal大数操作,精度你要好高就好高 第5个回答 2010-12-19 import java.io.*;public class factorial
factorial()
int Data[]=new int[5000];
int Digit;
int i,r,k;
int j;
int N=0;
for (i=1;i<5000;i++)
Data[i]=0;
Data[0]=1;
Data[1]=1;
Digit=1;
System.out.println ("This Program calculate factorial");
System.out.println ("Enter a number what you want to calculus : ");
try
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
N=Integer.parseInt(br.readLine());
catch (Exception ex)
System.out.println (ex);
for (i = 1; i<N+1; i++)
for (j=1; j<Digit+1; j++)
Data[j]*=i;
for (j=1;j<Digit+1;j++)
if(Data[j]>10)
for (r = 1; r<Digit+1; r++)
if(Data[Digit]>10)
Digit++;
Data[r+1]+=Data[r]/10;
Data[r]=Data[r]%10;
//System.out.print(".");
if(Data[Digit+1]>0)
Digit++;
System.out.print (N+"! = ");
for (k = Digit; k >0 ; k--)
System.out.print(Data[k]);
System.out.println("");
public static void main(String args[])
new factorial();
Java中 两个double型数字相乘的问题,想不明白是怎么回事
在myEcilpse或者Eclipse中,有这样一个main方法
public static void main(String[] args)
System.out.println(6.86*10);
这个方法执行后的结果应该输出:68.6
但是事实却是输出的这样的结果:68.60000000000001
这是为什么?(不止这么一个有问题,仅1000之内有好多数和6.86相乘都会有类似的问题)谁能告诉我为什么会这样?
你要想计算精确得用这个类:BigDecimal本回答被提问者采纳
以上是关于java数字运算结果太大,出错怎么办的主要内容,如果未能解决你的问题,请参考以下文章
Java中 两个double型数字相乘的问题,想不明白是怎么回事