相关疑难解决方法(0)

Java变量如何与自身不同?

我想知道这个问题是否可以用Java解决(我是语言新手).这是代码:

class Condition {
    // you can change in the main
    public static void main(String[] args) { 
        int x = 0;
        if (x == x) {
            System.out.println("Ok");
        } else {
            System.out.println("Not ok");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在实验室收到了以下问题:如何在x == x不修改条件本身的情况下跳过第一种情况(即使条件为假)?

java if-statement

106
推荐指数
10
解决办法
8492
查看次数

为什么 Math.min() 从 [+0, 0, -0] 返回 -0

我知道 (-0 === 0) 结果是正确的。我很好奇为什么-0 < 0 会发生?

当我在 stackoverflow 执行上下文中运行此代码时,它返回0.

const arr = [+0, 0, -0];
console.log(Math.min(...arr));
Run Code Online (Sandbox Code Playgroud)

但是当我在浏览器控制台中运行相同的代码时,它返回-0. 这是为什么?我尝试在谷歌上搜索它,但没有找到任何有用的东西。这个问题可能不会给某些实际例子增加价值,我想了解 JS 是如何计算它的。

 const arr = [+0, 0, -0];
    console.log(Math.min(...arr)); // -0
Run Code Online (Sandbox Code Playgroud)

javascript math floating-point min negative-zero

59
推荐指数
3
解决办法
4293
查看次数

原始浮点值如何为-0.0?那是什么意思?

为什么原始浮点值可以是-0.0?那是什么意思?
我可以取消该功能吗?

当我有:

  float fl;  
Run Code Online (Sandbox Code Playgroud)

然后fl == -0.0返回true,所以fl == 0.但是当我打印它时,它会打印出来-0.0.

java floating-point

50
推荐指数
4
解决办法
2万
查看次数

什么是在x86上提供无分支FP min和max的指令?

引用(感谢作者开发和共享算法!):

https://tavianator.com/fast-branchless-raybounding-box-intersections/

由于现代浮点指令集可以在没有分支的情况下计算最小值和最大值

作者的相应代码就是

dmnsn_min(double a, double b)
{
  return a < b ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

我很熟悉例如_mm_max_ps,但这是一个矢量指令.上面的代码显然是用于标量形式.

题:

  • 什么是x86上的标量无分支minmax指令?这是一系列指令吗?
  • 假设它将被应用,或者如何调用它是否安全?
  • 关于min/max的无分支问题是否有意义?根据我的理解,对于光线跟踪器和/或其他视觉软件,给定光线盒交叉例程,分支预测器没有可靠的模式来拾取,因此消除分支确实有意义.我这是对的吗?
  • 最重要的是,所讨论的算法是围绕(+/-)INFINITY进行比较而建立的.这是可靠的,我们正在讨论的(未知)指令和浮点标准吗?

以防万一:我熟悉在C++中使用min和max函数,相信它是相关的,但不是我的问题.

c floating-point optimization x86 assembly

5
推荐指数
1
解决办法
1493
查看次数