骑摩托车大船,一种把日子过成段子的硬核浪漫
0
2026-10-12
说实话,我第一次看到abs这个词的时候,脑子里蹦出来的是“腹肌”——毕竟健身房里总有人念叨“abs”,后来学编程才发现,这玩意儿跟身材没关系,它是absolute的缩写,意思是“绝对值”,别看它简单,真到用的时候,不少人还是会愣一下:负数怎么变正数?复数怎么办?Excel里能不能用?今天我就按自己平时琢磨问题的思路,把abs怎么使用这件事聊透。
你可以把abs想象成一把“去掉方向、只留距离”的尺子,比如你从家出门,往东走3公里,或者往西走3公里,距离都是3公里,方向不同,但离家的距离一样,abs做的就是这件事:不管你是正数还是负数,它只告诉你“离0有多远”。
就这么简单?对,数学上的定义就是这样,但怎么使用,在不同场景里差别还挺大。
我刚开始写代码的时候,总担心abs是不是得自己写,后来发现,几乎所有主流语言都内置了abs函数,只是叫法或者位置不太一样。
Python最省心,直接abs()就行,整数、浮点数、甚至复数都能处理,复数的话,它返回的是模长(也就是到原点的距离)。
Java需要先看类型:Math.abs(int)、Math.abs(double)、Math.abs(long),C语言也类似,abs()在stdlib.h里管整数,fabs()在math.h里管浮点数,我第一次用C的时候,把浮点数塞进abs,结果出来个0,折腾半天才发现用错了函数。
JS里是Math.abs(),注意M大写,它会把参数转成数字再取绝对值,比如Math.abs(-“5”)会返回5,但Math.abs(“abc”)返回NaN。
很多人不知道,Excel里也有abs函数,公式就是=ABS(单元格),比如A1里是-100,B1写=ABS(A1),就变成100,做报表的时候,算偏差、算距离特别方便。
SQL里也有,比如MySQL的ABS(),Oracle的ABS(),写查询的时候,如果某个字段可能是负数,你又想统一成正数来比较,直接套一层abs就行。

下面这张表,是我自己踩过的坑,你对照着看能省不少时间。
| 场景 | 正确写法 | 容易犯的错 |
| Python整数 | abs(-7) | 写成math.abs(-7)会报错 |
| C浮点数 | fabs(-3.2) | 用abs(-3.2)结果可能是0 |
| Excel | =ABS(A1) | 忘了等号,或者写成abs A1 |
| 复数取模 | Python直接abs(3+4j) | 其他语言要自己算平方和开根 |
还有一个点:abs不会改变原变量,你写x = abs(-5),x变成5,但原来的-5如果存在另一个变量里,那个变量还是-5,别指望它“原地修改”。
我自己的经验是,只要遇到“差值”、“距离”、“误差”这类词,就顺手加个abs。
反过来,如果你需要保留方向,我欠你5块”和“你欠我5块”是两码事,那就别用abs,用了就分不清谁欠谁了。
写到这里,我突然想起以前一个同事,他非要用abs来比较两个负数的大小,结果怎么都不对,其实abs只负责去掉符号,不负责排序,想比大小,直接用>或<就行,别绕弯子。
好了,关于abs怎么使用,基本上就是这些,你下次写代码或者做表格碰到负数想变正数,直接招呼abs就行,它不挑食,但你也别喂错类型。
发表评论
暂时没有评论,来抢沙发吧~