通八洲科技

Golang math.Abs和math.Copysign区别 Golang绝对值函数对比

日期:2025-12-29 00:00 / 作者:星降
math.Abs取绝对值,丢弃符号;math.Copysign保留x的绝对值并赋予y的符号。前者用于确保非负(如距离计算),后者用于符号迁移(如向量归一化)。

math.Abs 只取大小、丢掉符号;math.Copysign 不改变大小,只换符号。

math.Abs:纯取绝对值

输入任意 float64 值,返回其非负形式:

math.Copysign:搬运符号的“贴纸工具”

接收两个参数:x 是数值大小,y 决定目标符号,结果是 |x| 带上 y 的符号:

典型使用场景对比

两者解决的问题完全不同:

不复杂但容易忽略:Abs 是单参数“净化操作”,Copysign 是双参数“符号迁移操作”。选哪个,取决于你手里的数据里,符号信息是否要保留、转移或清除。