当前位置: 首页 > news >正文

【Java学习日记38】:C语言 fabs 与 Java abs 绝对值函数

一、C语言 fabs

  1. 功能

    • 专用于浮点数(float/double),返回参数的绝对值。

    • 整数绝对值用 abs()(需 #include <stdlib.h>)。

  2. 函数原型

    c

    double fabs(double x);      // 参数为 double,返回值 double  
    float fabsf(float x);       // float 版本(C99)  
    long double fabsl(long double x); // long double 版本(C99)  
  3. 头文件

    c

    #include <math.h>   // 必须包含  
  4. 使用示例

    c

    double num = -3.14;  
    double result = fabs(num);  // result = 3.14  
  5. 注意事项

    • 只支持浮点数,整数需用 abs()


二、Java abs
  1. 功能

    • 重载方法:支持所有基本数值类型(intlongfloatdouble)。

  2. 方法定义

    java

    Math.abs(int a)      → 返回 int  
    Math.abs(long a)     → 返回 long  
    Math.abs(float a)    → 返回 float  
    Math.abs(double a)   → 返回 double  
  3. java

    import java.lang.Math;  // 默认已导入,无需额外操作  
  4. 使用示例

    java

    int num1 = -10;  
    double num2 = -5.5;  
    int abs1 = Math.abs(num1);    // 10  
    double abs2 = Math.abs(num2); // 5.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语言 fabsJava Math.abs
支持类型仅浮点数(float/double)所有基本数值类型
整数处理需用 abs()(整型)直接重载支持
头文件/包#include <math.h>java.lang.Math(自动导入)
特殊值处理 NaN/Infinity
整数边界无问题Integer.MIN_VALUE 会溢出

复习要点

  1. C区分整数(abs)和浮点(fabs),Java用重载统一处理。

  2. Java的整数最小值取绝对值会溢出!

  3. C用 fabs 必须:

    • 包含 math.h

    • 编译时加 -lm(Linux)。

笔记核心:类型匹配是关键,边界陷阱要警惕!

相关文章:

  • Linux相关问题整理
  • Boring Blog
  • Vue 数据代理机制对属性名的要求
  • 前端将多个PDF链接的内容拼接成一个后返回出一个链接进行打开
  • 脑机新手指南(九):高性能脑文本通信:手写方式实现(上)
  • JS之Dom模型和Bom模型
  • Java SE - 类和对象入门指南
  • SQL29 验证刷题效果,输出题目真实通过率
  • Future与CompletableFuture:异步编程对比
  • Linux 文件内容的查询与统计
  • 万字深度解析注意力机制全景:掌握Transformer核心驱动力​
  • 【基于阿里云上Ubantu系统部署配置docker】
  • Haclon例程1-<剃须刀片检测程序详解>
  • < 买了个麻烦 (二) 618 京东云--轻量服务器 > “可以为您申请全额退订呢。“ 工单记录:可以“全额退款“
  • EtherCAT转CANopen网关与伺服器在汇川组态软件上的配置步骤
  • 免下载苹果 IPA 文件重签名工具:快速更换应用名称和 BID的教程
  • Python的LibreOffice命令行详解:自动化文档处理的终极指南
  • AUTOSAR图解==>AUTOSAR_TR_ModelingShowCases
  • OC学习—Block初探(简易版)
  • ubuntu 安装 JDK8
  • 自建企业邮箱/网站seo的优化怎么做
  • 为什么要建立网站/自己在家怎么做跨境电商
  • 收费下载网站源码/网络营销seo培训
  • 住房和城乡建设部科技网站首页/关联词有哪些五年级
  • 休闲会所网站建设/互联网产品营销策划方案
  • 视频背景做网站背景/网络营销案例分析