符号情報が失われないように浮動小数点をシリアル化したい。具体的には、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 によって提案されたように。