为了账号安全,请及时绑定邮箱和手机立即绑定

Golang中的负零文字

Golang中的负零文字

Go
富国沪深 2021-05-14 18:35:25
IEEE754支持负零。但是这段代码a  := -0.0fmt.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中编写一个负零文字?
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

一个已注册的问题

碰巧提供了一种解决方案:

a := math.Copysign(0, -1)

还不错,因为它显然引用了copysign定义的标准函数IEEE754

但这意味着您需要导入一个软件包,而对于(当然很小且很少见的)需求来说,这仍然显得过于沉重。


查看完整回答
反对 回复 2021-05-24
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

package main


import (

        "fmt"

        "math"

)


func main() {

        a := 1. / math.Inf(-1)

        fmt.Println(a, 1/a)

}


输出:


-0 -Inf


查看完整回答
反对 回复 2021-05-24
?
动漫人物

TA贡献1815条经验 获得超10个赞

我只是尝试了一下,它似乎对我有用。


package main


import (

    "fmt"

    )


func main() {

    zero := float64(0)

    neg_zero := -zero

    fmt.Println(zero, neg_zero)

}

虽然我不能正常工作 neg_zer0 := - float64(0)


查看完整回答
反对 回复 2021-05-24
  • 3 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信