IEEE754 支持负零,但这段代码
a := -0.0
fmt.Println(a, 1/a)
输出
0 +Inf
在我预期的地方
-0 -Inf
其他以IEEE754为基础的浮点格式的语言允许您创建负零字面量。
Java:
float a = -0f;
System.out.printf("%f %f", a, 1/a); // outputs "-0,000000 -Infinity"
C# :
C#:var a = -0d;
Console.WriteLine(1/a); // outputs "-Infinity"
Javascript :
JavaScript:
var a = -0;
console.log(a, 1/a); // logs "0 -Infinity"
但是我在Go中找不到相应的等价物。
在Go中如何编写负零字面量?
a := 0.0; a *= -1.0
吗? - Daniel Fischera := 0.0; -a
这种情况可能是编译器能够将其优化为负零常量的最有可能的情况。这只比在语言中添加一个字面负零略微冗长。 - thomasrutter-0.0
定义为等同于0.0
,因此在此阶段更改该定义是不可能的。 - thomasrutter