当前位置: 首页 > 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)。

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

http://www.xdnf.cn/news/979417.html

相关文章:

  • element plus的el-form重置无效
  • CavityPlus: 北大团队研发的综合性蛋白质结合位点检测及功能分析网络服务器
  • 【python】预测投保人医疗费用,附insurance.csv数据集
  • 嵌入式系统内核镜像相关(三)
  • React 状态管理指南:Redux 原理与优化策略
  • 避坑:启动sdk-c demo master需要注意的事情
  • 【AI】模型vs算法(以自动驾驶为例)
  • 基于React Native的HarmonyOS 5.0休闲娱乐类应用开发
  • 多分类性能评估方法
  • 企业级RAG系统架构设计与实现指南(基于Java技术栈)
  • uniapp 腾讯云 COS 访问控制实战(细粒度权限管理)
  • 撤销Git合并操作方法总结
  • 七牛云域名配置与CNAME解析
  • 李沐 《动手学深度学习》 | 实战Kaggle比赛:预测房价
  • 【PhysUnits】17.7 readme.md更新
  • 从代码学习深度强学习 - Dyna-Q 算法 PyTorch版
  • Android Gson工具类
  • 免下载苹果 IPA 文件重签名工具:快速更换应用名称和 BID的教程
  • xcode中project.pbxproj点开为空白问题
  • Linux Swap分区应该禁用吗?深入辨析其作用与性能优化
  • Spring @Qualifier,@Primary
  • 接收rabbitmq消息
  • 记录下three.js学习过程中不理解问题----材质(material)⑤
  • 在前端元素中,点击当前元素,但是却选中其他元素的文字的问题
  • Cesium圆锥渐变色实现:融合顶点着色器、Canvas动态贴图与静态纹理的多方案整合
  • 深度剖析:UI 设计怎样为小程序构建极致轻量体验
  • 在 Windows 上安装和配置 Redis 及可视化工具指南
  • C#接口代码记录
  • 物联网基础概述【一】
  • 容器化部署案例一wordpress