猿问

Golang中的负零文字

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中编写一个负零文字?


富国沪深
浏览 217回答 3
3回答

Smart猫小萌

有一个已注册的问题。碰巧提供了一种解决方案:a := math.Copysign(0, -1)还不错,因为它显然引用了copysign定义的标准函数IEEE754。但这意味着您需要导入一个软件包,而对于(当然很小且很少见的)需求来说,这仍然显得过于沉重。

泛舟湖上清波郎朗

package mainimport (        "fmt"        "math")func main() {        a := 1. / math.Inf(-1)        fmt.Println(a, 1/a)}输出:-0 -Inf

动漫人物

我只是尝试了一下,它似乎对我有用。package mainimport (    "fmt"    )func main() {    zero := float64(0)    neg_zero := -zero    fmt.Println(zero, neg_zero)}虽然我不能正常工作 neg_zer0 := - float64(0)
随时随地看视频慕课网APP

相关分类

Go
我要回答