Den*_*ret 9 math floating-point go ieee-754
IEEE754支持负零.但是这段代码
a := -0.0
fmt.Println(a, 1/a)
Run Code Online (Sandbox Code Playgroud)
输出
0 +Inf
Run Code Online (Sandbox Code Playgroud)
我原以为预期的地方
-0 -Inf
Run Code Online (Sandbox Code Playgroud)
浮点格式基于IEEE754的其他语言允许您创建负零文字
Java:
float a = -0f;
System.out.printf("%f %f", a, 1/a); // outputs "-0,000000 -Infinity"
Run Code Online (Sandbox Code Playgroud)
C# :
var a = -0d;
Console.WriteLine(1/a); // outputs "-Infinity"
Run Code Online (Sandbox Code Playgroud)
Javascript:
?var a = -0;
console.log(a, 1/a);? // logs "0 -Infinity"
Run Code Online (Sandbox Code Playgroud)
但我在Go中找不到相同的东西.
你怎么写go负零文字?
有一个注册问题.
它碰巧提供了一种解决方案:
a := math.Copysign(0, -1)
Run Code Online (Sandbox Code Playgroud)
它并没有那么糟糕,因为它显然是指copysign由定义的标准函数IEEE754.
但这意味着您需要导入一个包,这对于(无可否认的次要和罕见)需求来说仍然太重了.
package main
import (
"fmt"
"math"
)
func main() {
a := 1. / math.Inf(-1)
fmt.Println(a, 1/a)
}
Run Code Online (Sandbox Code Playgroud)
(还在这里)
输出:
-0 -Inf
Run Code Online (Sandbox Code Playgroud)