java有常函数_Java开发笔记(十一)常见的数学函数
前面介绍了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开发笔记(十一)常见的数学函数相关推荐
- java swing 列表框_Java开发笔记(一百三十一)Swing的列表框
前面介绍了选择框的用法,当时为了方便用户勾勾点点,无论是复选框还是单选按钮,统统把所有选项都摆在界面上.倘若只有两三个选项还好办,要是选项数量变多比如超过五个,这么多的选择框一齐在界面罗列,不光程序员 ...
- java awt 显示图片_Java开发笔记(一百二十三)AWT图像视图
前面介绍了AWT的几种基础控件,从按钮到文本标签,从输入框到选择框,无一例外都能显示文字,唯独无法显示某张图片文件.本以为AWT会提供专门的控件来显示图片,然而偏偏没有意料之中的图像控件,这可真是弱爆 ...
- java正则表达式分割字符串_Java开发笔记(三十七)利用正则串分割字符串
前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...
- java 正则切分句子_Java开发笔记(三十七)利用正则串分割字符串
前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...
- c语言常用数学函数大全查询,C语言数学函数 C语言中全部可用的数学函数有哪些?...
导航:网站首页 > C语言数学函数 C语言中全部可用的数学函数有哪些? C语言数学函数 C语言中全部可用的数学函数有哪些? 相关问题: 匿名网友: /*--------------------- ...
- java安装_Java开发中更多常见的危险信号
java安装 在< Java开发中的常见危险信号>一文中,我介绍了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似于" ...
- java 绑定微信号开发_Java开发中的常见危险信号
java 绑定微信号开发 在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码有问 ...
- java技术学习内容_Java开发主要都学些什么内容?
展开全部 Java开发培训班主要学32313133353236313431303231363533e58685e5aeb931333363386164习的课程大纲,你可以看下. 第一阶段:JavaSE ...
- java面试常考_JAVA面试常考系列十
JAVA面试常考系列十 题目一 Servlet是什么? Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,主要的 ...
最新文章
- 讯飞输入法皮肤制作_手机输入法哪家强:百度、搜狗、讯飞输入法对比评测
- Spark性能优化指南:高级篇
- Python ImportError: No module named Image
- 基于水平集方法和G0模型的SAR图像分割
- 云计算:大数据时代的系统工程(三)
- 创建一个简单tcp服务器需要的流程
- java cookie详解
- 三相桥式全控整流电路simulink仿真_维修电工高级仿真-教学软件
- KMeans聚类算法
- 水晶报表 文件 xxxx{354234-523432-5235-325-2523}.rpt 文件内部出错:无法加载数据解决方案
- Vue 中 provide 和 reject 的使用详解和源码解析
- 海南楼市充斥着传说 投机者必将自食其果
- java 庖丁解牛api_重磅|庖丁解牛之——Flutter for Web
- unity 模拟抛物线 1
- Python变量赋值出现SyntaxError: invalid syntax
- 手撸Spring系列10:Spring AOP(实战篇)
- UI 自动化中的分层设计
- 一个sql server2005分页的存储过程
- CasePlayer2
- 最新macOS Big Sur11.1新功能介绍
热门文章
- Python Tricks —— 计算 1+1/2+1/4+...=2
- call 在mysql,在MYSQL上选择CASE和CALL程序
- python免费课程400节-宿州编程少儿课程
- python使用-Python的使用方法
- 用python 画炫酷的图并讲解-使用Python的turtle画炫酷图形
- python画图代码-Python实战小程序利用matplotlib模块画图代码分享
- 为什么都建议学java而不是python-现在学Python还是Java好呢?
- python的第三方库是干什么用的-20个必不可少的Python库也是基本的第三方库
- 长虹智慧厨房解决方案,让你AI上智慧家居生活
- python中的缩进是长度统一吗_python缩进长度是否统一