【Java学习日记38】:C语言 fabs 与 Java abs 绝对值函数
一、C语言 fabs
-
功能
-
专用于浮点数(
float
/double
),返回参数的绝对值。 -
整数绝对值用
abs()
(需#include <stdlib.h>
)。
-
-
函数原型
c
double fabs(double x); // 参数为 double,返回值 double float fabsf(float x); // float 版本(C99) long double fabsl(long double x); // long double 版本(C99)
-
头文件
c
#include <math.h> // 必须包含
-
使用示例
c
double num = -3.14; double result = fabs(num); // result = 3.14
-
注意事项
-
只支持浮点数,整数需用
abs()
。
-
二、Java abs
-
功能
-
重载方法:支持所有基本数值类型(
int
,long
,float
,double
)。
-
-
方法定义
java
Math.abs(int a) → 返回 int Math.abs(long a) → 返回 long Math.abs(float a) → 返回 float Math.abs(double a) → 返回 double
-
包
java
import java.lang.Math; // 默认已导入,无需额外操作
-
使用示例
java
int num1 = -10; double num2 = -5.5; int abs1 = Math.abs(num1); // 10 double abs2 = Math.abs(num2); // 5.5
-
注意事项
-
整数最小值溢出:
java
Math.abs(Integer.MIN_VALUE); // 返回负数(-2147483648)
原因:补码范围不对称,负数范围比正数大1。
-
浮点数支持
NaN
/Infinity
:java
Math.abs(Double.NaN); // NaN Math.abs(Double.POSITIVE_INFINITY); // Infinity
-
三、对比总结
特性 | C语言 fabs | Java Math.abs |
---|---|---|
支持类型 | 仅浮点数(float/double) | 所有基本数值类型 |
整数处理 | 需用 abs() (整型) | 直接重载支持 |
头文件/包 | #include <math.h> | java.lang.Math (自动导入) |
特殊值 | 无 | 处理 NaN /Infinity |
整数边界 | 无问题 | Integer.MIN_VALUE 会溢出 |
复习要点
-
C区分整数(
abs
)和浮点(fabs
),Java用重载统一处理。 -
Java的整数最小值取绝对值会溢出!
-
C用
fabs
必须:-
包含
math.h
-
编译时加
-lm
(Linux)。
-
笔记核心:类型匹配是关键,边界陷阱要警惕!