Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免大对数溢出_Java_Overflow_Logarithm - Fatal编程技术网

Java 如何避免大对数溢出

Java 如何避免大对数溢出,java,overflow,logarithm,Java,Overflow,Logarithm,我试图用Java计算一个大的logarithim,但无法解决如何解决溢出问题。研究表明我需要使用BigDecimal类,但我不能在这个类中使用double。 有人能帮忙吗 干杯,下面是我试图计算的一个例子: Math.log10(13168375/4224127912)您必须解释错误消息 Y.java:16: error: integer number too large: 4224127912 System.out.println( Math.log10(13

我试图用Java计算一个大的logarithim,但无法解决如何解决溢出问题。研究表明我需要使用BigDecimal类,但我不能在这个类中使用double。 有人能帮忙吗

干杯,下面是我试图计算的一个例子:
Math.log10(13168375/4224127912)

您必须解释错误消息

Y.java:16: error: integer number too large: 4224127912
        System.out.println(          Math.log10(13168375/4224127912) );
                                                     ^
这意味着4224127912(!)对于整数来说太大

你可以:

 Math.log10(13168375/4224127912.0)   // use a double literal

 Math.log10((double)13168375/4224127912L)    // use a long literal  
 Math.log10(13168375.0/4224127912L)          // use a long literal
溢出


这里没有“大”的对数。

我不确定这里有什么问题。为什么不能直接执行
log10(13168375)-log10(4224127912)
?溢出在哪里?为什么不能从
double
创建一个新的
BigDecimal
,而不是强制转换<代码>BigDecimal someNumber=新的BigDecimal(doublVal)如果您想计算一个大十进制的
日志,请参阅。@GriffeyDog嘿,谢谢-我正集中精力避免错误消息。我在第一个数字上也加了一个“.0”。