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# :
var a = -0d; Console.WriteLine(1/a); // outputs "-Infinity"
Javascript:
var a = -0; console.log(a, 1/a); // logs "0 -Infinity"
但是我在Go中找不到等效项。
您如何在go中编写一个负零文字?
有一个已注册的问题。
碰巧提供了一种解决方案:
a := math.Copysign(0, -1)
还不错,因为它显然引用了copysign定义的标准函数IEEE754。
copysign
IEEE754
但这意味着您需要导入一个软件包,而对于(当然较小且很少见的)需求来说,这仍然显得过于沉重。