我想以不丢失符号信息的方式序列化浮点数。具体来说,我想将 IEEE-754 负零与常规零区分开来。
语言规范说
浮点除以零的结果没有超出 IEEE-754 标准;是否发生运行时恐慌是特定于实现的。
这表明我做不到
n == 0 && (float64(1) / n) < 0
我试过了math.Copysign
,math.Signbit
它说
func Signbit(x float64) bool
Signbit
true
如果 x 为负数或负零,则返回。
但
n == 0 && math.Signbit(n)
似乎不起作用
n := -float64(0)
有任何想法吗?
编辑:
我提交了问题 2196来跟踪我认为两者之间令人困惑的区别
nz := -float64(0)
和
pz := float64(0)
nz := -pz
正如peterSO所建议的那样。