我想知道这个问题是否可以用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
不修改条件本身的情况下跳过第一种情况(即使条件为假)?
我知道 (-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) 为什么原始浮点值可以是-0.0?那是什么意思?
我可以取消该功能吗?
当我有:
float fl;
Run Code Online (Sandbox Code Playgroud)
然后fl == -0.0
返回true
,所以fl == 0
.但是当我打印它时,它会打印出来-0.0
.
引用(感谢作者开发和共享算法!):
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
,但这是一个矢量指令.上面的代码显然是用于标量形式.
题:
以防万一:我熟悉在C++中使用min和max函数,相信它是相关的,但不是我的问题.