我想序列化一個浮點,使符號信息不會丟失。具體而言,我想區分IEEE-754負零與常規零。區分零的符號:-float64(0)from go中的float64(0)
由零浮點除法的結果不超過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)
任何工作思路?
編輯:
我申請issue 2196跟蹤我認爲是
nz := -float64(0)
和
pz := float64(0)
nz := -pz
之間的混亂差異由peterSO的建議。
謝謝,我想我明白了。這個符號在'-float64(0)'中丟失了,但是當你執行顯式的額外操作時不會。 –