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相乘都会有类似的问题)谁能告诉我为什么会这样?

java 中的浮点数运算会出现精度丢失的结果 这是因为他们运算的时候是转换成2进制运算的 所以得到的结果太大 无法表示造成的 避免这种结果的话 就要用LS那位的方法了 参考技术A 计算机是二进制的,而小数转成二进制时会出现除不尽的问题
你要想计算精确得用这个类:BigDecimal本回答被提问者采纳

以上是关于java数字运算结果太大,出错怎么办的主要内容,如果未能解决你的问题,请参考以下文章

Java中 两个double型数字相乘的问题,想不明白是怎么回事

C语言编译器出错怎么解决

devC++程序没错啊,可是为啥运行结果出错?

java中怎么将字符串(带运算符号加减乘除)转换成代数算式运算

JAVA程序计算结果出错

怎么检查打印机的状态