如何解决我的代码未产生正确的输出
long fact= 1;
for(int i=1;i<=n;i++){
fact=fact*i;
}
System.out.println(fact);
该代码应产生大量的阶乘,例如25。但是输出不正确。
解决方法
像萨米尔·维亚斯(Samir Vyas)说
“它超出了Java long类型可以表示的数字范围。”
如果要绕过此限制,则需要使用BigInteger
或BigDecimal
。
您可以找到有关此问题Large Numbers in Java
它超出了Java plot.series[1].points[2]
类型可以表示的数字范围。
https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html
,尝试一下。
Bar
打印
int n = 30;
System.out.printf("%d! = %,d%n",n,fact(n));
public static BigInteger fact(int fact) {
BigInteger f = BigInteger.valueOf(fact);
while (--fact > 1) {
f = f.multiply(BigInteger.valueOf(fact));
}
return f;
}
有关任意精度数学的更多信息,请查看JDK API中的BigInteger和BigDecimal。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。