在ruby中,为什么我可以给负0.0浮点数分配一个负号,此功能有任何用处吗?有人可以向我解释这个吗?
-0.0
#=> -0.0
-0.0 * -1
#=> 0.0
Run Code Online (Sandbox Code Playgroud) 我知道 (-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) IEEE浮点数有一个位用于指示符号,这意味着您可以在技术上具有零(+0和-0)的不同二进制表示.我是否可以在C中进行算术运算,从而产生负零浮点值?
这个问题的灵感来自于另一个问题是否可以安全地比较0.0f
使用==
,我还想知道是否还有其他方法来表示零,这会导致float1 == 0.0f
看似完全相等的值.
[编辑]请不要评价比较花车的平等安全性!我并没有试图添加那些重复的问题.
我在尝试在代码高尔夫游戏中优化弦乐复数时遇到了这个怪癖.我有想法将字符串写成复数,然后用来substr
有条件地删除最后一个字符:
var counter = 1;
var myText = counter + " units".substr(0, 6-(counter===1));
Run Code Online (Sandbox Code Playgroud)
这很好 - 它做了我想要的.但是看看String.prototype.slice()的MDN文档,我认为通过使用负零作为函数的第二个参数,我找到了一种使其更短的方法.来自文档:
endSlice
可选的.从零开始的索引,用于结束提取.如果省略,slice()将提取到字符串的末尾.如果为负数,则将其视为sourceLength + endSlice,其中sourceLength是字符串的长度(例如,如果endSlice为-3,则将其视为sourceLength - 3).
var myText = counter + " units".slice(0,-(counter===1));
Run Code Online (Sandbox Code Playgroud)
这将评估为何.slice(0,-1)
时counter
等于1,这将切断字符串中的最后一个字母,否则它将评估为.slice(0,-0)
,根据文档应该意味着从正在操作的字符串的长度中减去0个字符.
碰巧,-0被视为与+ 0相同String.prototype.slice
.我想知道这是否是一个惯例,将-0视为与+0相同(例如,我知道,-0 === +0
评估为true
).我想看看String.prototype.substr
,但+0和-0应该在该函数中以相同的方式处理.
有没有人对此更深入了解?语言设计中是否有一些基本惯例表明,虽然有符号零是语言特征,但应该忽略它,除非在某些情况下(如1/-0
)?
TL;博士,我咸,我不能对赢得代码高尔夫笑话切片.
有没有办法写一个类型特征来确定一个类型是否支持C++中的负零(包括整数表示,如符号和大小)?我没有看到任何直接这样做的东西,并且std::signbit
似乎不是constexpr.
澄清:我问,因为我想知道这是否可能,无论用例是什么,如果有的话.
我希望能够快速测试零是正数还是负数。
let neg: CGFloat = -0
let pos: CGFloat = +0
if pos == neg {
// this gets executed, but I don't want this
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不能像我需要的那样工作,有人可以帮助我吗?
谢谢 ;)
我的控制台告诉我,-0
回报0
和这两个c(1:5)[0]
和c(1:5)[-0]
回报integer(0)
。R 这是否意味着 R 没有“负零”的概念?
printf("%.3lf\n", -0.0001);
Run Code Online (Sandbox Code Playgroud)
这输出-0.000
,但不应该是0.000
?
如何在没有减号的情况下进行打印,即0.000
?
我有Double
数据类型,因为我需要带有浮点数的结果,但是如果我的结果是否定的,则会破坏我的所有算法.是否可能存在具有浮点的无符号数据类型?