java - 如何避免大对数溢出

标签 java overflow logarithm

我正在尝试用 Java 计算一个大的对数,但无法弄清楚如何解决溢出问题。研究表明我需要使用 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

没有溢出!

这里没有对数是“大”的。

关于java - 如何避免大对数溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293186/

相关文章:

c++ - 返回 int 的 log10 函数的性能

c++ - 规范化非常小的双数列表(可能性)

java - JRadiobutton 结合 JButtons 实现。错误方法不是抽象的并且不会覆盖抽象方法

java - 如何编写从外部存储器删除文件的代码

css - 使用缩放变换使 div 变小时如何溢出背景覆盖以可见?

Python数学模块

java - 将标签之间的单词替换为单词本身

java - 如何在客户端从 JavaScript 执行 Java 文件

css - Flexbox - 图像溢出

c# - 是否可以在 C# 中设置 UdpClient ReceiveBufferSize 属性?