前面介绍了Java编程的四则运算,虽然提供了基础的加减乘除符号,但是数学上还有其它运算符号,包括四舍五入用到的约等号≈、求绝对值的“| |”、开平方的“√ ̄”,这些运算符形态各异,而且并非ASCII码的基本字符,也就意味着它们无法原样搬到Java来。

为此,Java的设计师封装了一套数学函数库Math,把加减乘除以外的常见数学运算都纳入,然后作为Math库的函数方法提供给程序员调用。比如四舍五入变成了Math库的round方法,取绝对值变成了Math库的abs方法,Math库另外提供了取整方法floor和ceil。其中floor方法指的是将变量往下取整,也就是往数值小的方向取整;ceil方法指的是将变量往上取整,也就是往数值大的方向取整。

需要注意的是,如果变量值为负数(假设x=-9.9),那么对x做floor取整将得到-10,对x做ceil取整将得到-9,这种情况与常人理解的正数取整并不相同。假设变量值为正数(如x=9.9),则对x做floor向下取整将得到9,对x做ceil向上取整将得到10。负数的取整结果看似有悖常理,其实完全没有毛病,因为floor方法取的是数值更小的整数,而ceil方法取的是数值更大的整数。既然-10

double decimalPositive = 9.9;

// 四舍五入

long roundPositive = Math.round(decimalPositive);

System.out.println("roundPositive="+roundPositive);

// 往下取整,也就是往数值小的方向取整

double floorPositive = Math.floor(decimalPositive);

System.out.println("floorPositive="+floorPositive);

// 往上取整,也就是往数值大的方向取整

double ceilPositive = Math.ceil(decimalPositive);

System.out.println("ceilPositive="+ceilPositive);

double decimalNegative = -9.9;

// 四舍五入

long roundNegative = Math.round(decimalNegative);

System.out.println("roundNegative="+roundNegative);

// 往下取整,也就是往数值小的方向取整

double floorNegative = Math.floor(decimalNegative);

System.out.println("floorNegative="+floorNegative);

// 往上取整,也就是往数值大的方向取整

double ceilNegative = Math.ceil(decimalNegative);

System.out.println("ceilNegative="+ceilNegative);

// 取绝对值

double absoluteValue = Math.abs(decimalNegative);

System.out.println("absoluteValue="+absoluteValue);

科学计算上常常还需要开平方、幂运算、求对数等复杂函数,Java自带的Math库也提供了相应的方法,例如sqrt方法对应开平方运算,pow方法对应求某数的n次方,exp方法对应求自然常数e的n次方,log方法对应求自然对数的运算(即exp方法的逆运算),log10方法对应求底数为10的对数。这些方法的详细调用代码如下所示:

double nine = 9;

// 开平方。对应数学符号√ ̄

double sqrt = Math.sqrt(nine);

System.out.println("sqrt="+sqrt);

// 求n次方。pow的第一个参数为幂运算的底数,第二个参数为幂运算的指数

double pow = Math.pow(nine, 2);

System.out.println("pow="+pow);

double five = 5;

// 求自然常数e的n次方

double exp = Math.exp(five);

System.out.println("exp="+exp);

// 求自然对数,为exp方法的逆运算。对应数学函数lnN

double log = Math.log(exp);

System.out.println("log="+log);

// 求底数为10的对数。对应数学函数logN

double log10 = Math.log10(100);

System.out.println("log10="+log10);

除了代数运算的常见函数之外,Math库还提供了几何方面的三角函数运算,包括正弦、余弦、正切、反正弦、反余弦、反正切都能找到对应的Math方法。不过Math库的三角方法与几何上的三角函数用法有所不同,几何的三角函数如sin、cos,后面跟着角度的数值,而Math库的三角方法跟着是弧度的数值。所谓弧度指的是该角度对应的圆弧长度比去圆的半径,即:弧度=弧长/半径=(角度/360)*2πr/r=角度*π/180。搞清楚了弧度与角度之间的关系,利用Math库进行各种三角运算就简单了,下面是这些三角方法的调用代码例子:

// 三角函数的角度

double angle = 60;

// 弧度=该角度对应的弧长/半径

double radian = angle*Math.PI/180;

// 求某弧度的正弦。求反正弦要调用asin方法

double sin = Math.sin(radian);

System.out.println("sin="+sin);

// 求某弧度的余弦。求反余弦要调用acos方法

double cos = Math.cos(radian);

System.out.println("cos="+cos);

// 求某弧度的正切。求反正切要调用atan方法

double tan = Math.tan(radian);

System.out.println("tan="+tan);

// 求某弧度的余切。Math库未提供求余切值的方法,其实余切值就是正切值的倒数

double ctan = 1.0/tan;

System.out.println("ctan="+ctan);

java有常函数_Java开发笔记(十一)常见的数学函数相关推荐

  1. java swing 列表框_Java开发笔记(一百三十一)Swing的列表框

    前面介绍了选择框的用法,当时为了方便用户勾勾点点,无论是复选框还是单选按钮,统统把所有选项都摆在界面上.倘若只有两三个选项还好办,要是选项数量变多比如超过五个,这么多的选择框一齐在界面罗列,不光程序员 ...

  2. java awt 显示图片_Java开发笔记(一百二十三)AWT图像视图

    前面介绍了AWT的几种基础控件,从按钮到文本标签,从输入框到选择框,无一例外都能显示文字,唯独无法显示某张图片文件.本以为AWT会提供专门的控件来显示图片,然而偏偏没有意料之中的图像控件,这可真是弱爆 ...

  3. java正则表达式分割字符串_Java开发笔记(三十七)利用正则串分割字符串

    前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...

  4. java 正则切分句子_Java开发笔记(三十七)利用正则串分割字符串

    前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...

  5. c语言常用数学函数大全查询,C语言数学函数 C语言中全部可用的数学函数有哪些?...

    导航:网站首页 > C语言数学函数 C语言中全部可用的数学函数有哪些? C语言数学函数 C语言中全部可用的数学函数有哪些? 相关问题: 匿名网友: /*--------------------- ...

  6. java安装_Java开发中更多常见的危险信号

    java安装 在< Java开发中的常见危险信号>一文中,我介绍了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似于" ...

  7. java 绑定微信号开发_Java开发中的常见危险信号

    java 绑定微信号开发 在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码有问 ...

  8. java技术学习内容_Java开发主要都学些什么内容?

    展开全部 Java开发培训班主要学32313133353236313431303231363533e58685e5aeb931333363386164习的课程大纲,你可以看下. 第一阶段:JavaSE ...

  9. java面试常考_JAVA面试常考系列十

    JAVA面试常考系列十 题目一 Servlet是什么? Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,主要的 ...

最新文章

  1. 讯飞输入法皮肤制作_手机输入法哪家强:百度、搜狗、讯飞输入法对比评测
  2. Spark性能优化指南:高级篇
  3. Python ImportError: No module named Image
  4. 基于水平集方法和G0模型的SAR图像分割
  5. 云计算:大数据时代的系统工程(三)
  6. 创建一个简单tcp服务器需要的流程
  7. java cookie详解
  8. 三相桥式全控整流电路simulink仿真_维修电工高级仿真-教学软件
  9. KMeans聚类算法
  10. 水晶报表 文件 xxxx{354234-523432-5235-325-2523}.rpt 文件内部出错:无法加载数据解决方案
  11. Vue 中 provide 和 reject 的使用详解和源码解析
  12. 海南楼市充斥着传说 投机者必将自食其果
  13. java 庖丁解牛api_重磅|庖丁解牛之——Flutter for Web
  14. unity 模拟抛物线 1
  15. Python变量赋值出现SyntaxError: invalid syntax
  16. 手撸Spring系列10:Spring AOP(实战篇)
  17. UI 自动化中的分层设计
  18. 一个sql server2005分页的存储过程
  19. CasePlayer2
  20. 最新macOS Big Sur11.1新功能介绍

热门文章

  1. Python Tricks —— 计算 1+1/2+1/4+...=2
  2. call 在mysql,在MYSQL上选择CASE和CALL程序
  3. python免费课程400节-宿州编程少儿课程
  4. python使用-Python的使用方法
  5. 用python 画炫酷的图并讲解-使用Python的turtle画炫酷图形
  6. python画图代码-Python实战小程序利用matplotlib模块画图代码分享
  7. 为什么都建议学java而不是python-现在学Python还是Java好呢?
  8. python的第三方库是干什么用的-20个必不可少的Python库也是基本的第三方库
  9. 长虹智慧厨房解决方案,让你AI上智慧家居生活
  10. python中的缩进是长度统一吗_python缩进长度是否统一