当前位置: 首页 > 知识库问答 >
问题:

为什么在Java中pow(1,qNaN)是qNaN,而在IEEE 754-2008中pow(1,qNaN)是1?

彭鹭洋
2023-03-14
System.out.println(Math.pow(1, Double.NaN)); // prints NaN (which is qNaN)

$ javac --version
javac 11.0.11
  • 如何检查Java是否符合IEEE 754?
  • 如何检查IEEE 754 Java的哪个版本是符合的?

共有1个答案

孟意致
2023-03-14

之所以会这样,是因为math.powjavadoc指定它是这样的。上面写着:

公共静态双电源(double a,double b)

返回提升为第二个参数的幂的第一个参数的值。特殊情况:

    null
 类似资料:
  • 问题内容: 即使int的最大值是2 31 -1,为什么Java HashMap的最大容量是1 << 30而不是1 << 31 ?最大容量初始化为 问题答案: Java使用带符号的整数,这意味着第一位用于存储数字的符号(正/负)。 一个四字节整数具有32位,其中数字部分由于有符号位而只能跨越31位。这将数字范围限制为 2 ^ 31-1 (由于包含0)到 -(2 ^ 31) 。

  • 问题内容: 运行下面的代码结果为0? 问题答案: 两个操作数(1和3)是整数,因此使用整数算术(此处为除法)。将结果变量声明为double只会导致除法后发生隐式转换。 当然,整数除法会返回除法四舍五入的真实结果。因此,0.333…此处的结果四舍五入为0。(请注意,处理器实际上不进行任何舍入,但是您仍然可以这样考虑。) 另外,请注意,如果两个操作数(数字)均以浮点数给出;3.0和1.0,甚至只是第一

  • 问题内容: 语言是Java。在…中是什么意思 在Java API中,以这种方式使用: 所以我认为是格式说明符。 是模板。 1是一个标志? $是宽度? #是精度吗? num是argsize吗? “ str”是typechar吗? 那正确吗? 问题答案: 模板: 可选的arguments_index是一个十进制整数,指示参数在参数列表中的位置。第一个参数由“ 1 $”引用,第二个参数由“ 2 $”等等

  • 我一直在做一些欧拉项目练习,以提高我的C语言知识。 我编写了以下函数: 这将在17毫秒内计算。 但是,如果我改变路线 自 计算在2毫秒内完成。我是否遗漏了< code>pow(int,int)的一些明显的实现细节,导致第一个表达式的计算速度如此之慢?

  • 问题内容: 为什么呢?如我所料是0。 问题答案: 所有移位都针对整数进行mod 32,对long进行mod 64。 从规范的第15.19节开始: 如果左侧操作数的提升类型为,则仅将右侧操作数的最低5位用作移位距离。就像右侧操作数受到掩码值0x1f的按位逻辑AND运算符&(§15.22.1)一样。因此,实际使用的移动距离始终在0到31(含)范围内。 如果左侧操作数的提升类型为,则仅将右侧操作数的六个

  • 问题内容: 之间有什么区别: 至: ? 我会更喜欢使用带式号码?还是我必须始终将shell与method 一起使用? 问题答案: 是Java(以及许多其他语言)中按位异或(XOR)运算符。它不用于求幂。为此,您必须使用。