java中的数学计算函数的总结

java中的数学计算函数

Math类:

 java.lang.Math类中包含基本的数字操作,如指数、对数、平方根和三角函数。
 java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(BigDecimal)算法的类。

 java.lang.Math类中包含E和PI两个静态常量,以及进行科学计算的类(static)方法,可以直接通过类名调用。
 public static final Double E = 2.7182818284590452354
 public static final Double PI = 3.14159265358979323846

 public static long abs(double x):传回 x 的绝对值。X也可int long float
 public static long sin(double x): 传回x径度的正弦函数值
 public static long cos(double x):传回x径度的余弦函数值
 public static long tan(double x): 传回x径度的正切函数值
 public static long asin(double x):传回x值的反正弦函数值。
 public static long acos(double x):传回x值的反余弦函数值。
 public static long atan(double x):传回x值的反正切函数值。
 public static long atan2(double x, double y):传回极坐标(polar)的θ值
 public static long floor(double x):传回不大于x的最大整数值
 public static long ceil(double x):传回不小于x的最小整数值。
 public static long exp(double x):传回相当于ex值
 public static long log(double x):传回x的自然对数函数值
 public static long max(double x,double y):传回x、y较大数
 public static long min(double x,double y):传回x、y较小数
 public static long pow(double x,double y):传回x的y次幂值
 public static long sqrt(double x): 传回x开平方值
 public static long rint(double x):传回最接近x的整数值
 public static long round(double x):传回x的四舍五入值
 public static long toDegrees(double angrad):传回将angrad径度转换成角度
 public static long toRadians(double angdeg): 传回将angdeg角度转换成径度
 public static long random():传回随机数值,产生一个0-1之间的随机数(不包括0和1)

NumberFormat类:

(public abstract class NumberFormat extends Format)
用java.text.NumberFormat类对输出的数字结果进行必要的格式化。

 使用该类如下方法类实例化一个NumberFormat对象:
  public static final NumberFormat getInstance()
 然后用该对象调用如下方法可以格式化数字number(返回字符串对象):
  public final String format(double number)

 NumberFormat类有如下常用方法:
 public void setMaximumFractionDigits(int newValue)//设置数的小数部分所允许的最大位数。
 public void setMaximumIntegerDigits(int newValue)//设置数的整数部分所允许的最大位数。
 public void setMinimumFractionDigits(int newValue)//设置数的小数部分所允许的最小位数。
 public void setMinimumIntegerDigits(int newValue)//设置数的整数部分所允许的最小位数。
 (更多方法及用法看JDK6API参考。)

  BigInteger类、BigDecimal类:

 java.math包中的BigInteger类和BigDecimal类分别提供任意精度的整数和小数运算。
 两个类设计思想一样,这里只对BigInterger类稍做介绍,细节可以查看JDK6API参考。

 构造方法如下:
  BigInteger(String val) //将 BigInteger 的十进制字符串表示形式转换为 BigInteger。
  还有很多考虑周全的构造函数,建议要准备写特殊需求的BigInteger前先认真翻下JDK。

 常用方法:
  abs() //返回其值是此BigInteger的绝对值的BigInteger。
  add(BigInteger val) //返回其值为(this+val)的BigInteger。
  subtract(BigInteger val) //返回其值为(this-val)的BigInteger。
  multiply(BigInteger val) // 返回其值为(this*val)的BigInteger。
  divide(BigInteger val) //返回其值为(this/val)的BigInteger。
  remainder(BigInteger val) //返回其值为(this%val)的BigInteger。
  compareTo(BigInteger val) //将此BigInteger与指定的BigInteger进行比较。返回值1、0、-1分别表示大于、等于、小于
  pow(int exponent) //返回当前大数的exponent次幂。
  toString() //返回此BigInteger的十进制字符串表示形式。
  toString(int radix) //返回此BigInteger的给定基数(radix进制)的字符串表示形式。

补充:

(1)abs():返回某数字的绝对值.参数可以是float、double、long或int。如果是byte或short类型,那么它们会被强制转换成int类型。
(2)ceil()会找到下一个最大整数。例如参数为9.01时,返回10.0。为-0.1时,返回-0.0。返回比参数大的整数,而且都是双精度类型的。如果参数是整数,则该方法会返回这个参数的双精度型。
(3)floor()返回紧邻的最小整数。作用与ceil()正好相反,返回的是比参数小的整数,而且都是双精度型。如果参数为整数,则返回这个参数的双精度型。
(4)max()返回两个值中的最大值,只支持float double long int 不支持byte short。
(5)min()返回两个值中的最小值,只支持float double long int 不支持byte short。
(6)random()返回一个随机数,一个在0.0到1.0之间的双精度数。
(7)round()返回与某浮点数值最接近的整数值。参数可以为double和folat两种,而且支持四舍五入。例如:参数为9.01时,返回9,参数为9.5时,返回10,参数为-9.5时,返回-9。
(8)sqrt()返回某数值的平方根。如果该参数是"非数字"类型(NaN),或者小于零,则返回是NaN。

需要注意的问题,类型自动提升,其实类型提升是在运算之前完成的

加法运算
  byte a = 1;
  byte b = 2;
  byte c = a+b;
  报错,因为a+b之前会将a,b自动提升为int
  正确为: byte c = (byte)(a+b);
减法运算
  加法运算是一样的
乘法运算
  同样遵循类型自动提升
  int a = 3*5;  结果为: 15 int类型
  double b = 3*5.0;  结果为: 15.0 double类型
除法运算
  两个整数相除结果为整数,小数位截断
    int a = 10/4; 结果为2
    int b 5/7; 结果为0
  如果参与运算有浮点数,则进行浮点数除
    double a = 10.0/5.0;  结果为2.0
    double b = 10.0/5;   结果为2.0
    double c = 10.0/0;   结果为Infinity(正无穷大)
    double d = -10.0/0;   结果为-Infinity(负无穷大)
    double e = 0.0/0;    结果为NaN(不是数字)
求余运算分3步
  第一步: 左边操作数的绝对值减去右边操作数的绝对值,得到差
  第二步: 得到的差两种情况
    如果差比右边操作数的绝对值大,再执行第一步
    如果差比右边操作数的绝对值小,将差返回
  第三步: 结果的符号为左边操作数的符号
  需要注意的是: 整数进行求余时,右边操作数为0,则报错,浮点数进行求余时,右边操作数为0,则为NaN
    15%4 = 3;
    -15%4 = -3;
    15%0 报错
    15.0%0 = NaN
自增自减运算
  int b = a++; 先把a的值赋给b,a再+1
  int b = ++a; 先给a+1,再把a的值赋给b
关系运算符
  ==,!=,>,>=,<,<=
逻辑运算符
  短路与: 使用&&表示,双目运算符,只要第一个操作数为false,就发生短路,后面不执行
    短路或: 使用||表示,双目运算符,只要第一个操作数为true,就发生短路,后面不执行
    非短路与: 使用&表示,双目运算符,如果第一个操作数为false,第二个操作数还会执行
  非短路或: 使用|表示,双目运算符,如果第一个操作数为true,第二个操作数还会执行
    String str = null;
    if(str != null & !str.equals("")){} 报错,空指针异常,因为第二个操作数也执行了
    if(str != null & !str.equals("")){} 不报错,因为第二个操作数没有执行
  非运算
三目运算符
  5>10?true:false;
位运算
  位运算cpu直接支持的,效率最高
  位运算允许对整数中单个比特进行操作,为运算会对两个操作数中对应比特执行布尔代数运算,产生结果
  & 与: 二者比特都是1,则结果为1,否则为0
  | 或: 二者比特都是0,则结果为0,否则为1
  ^ 异或: 二者比特相同,则结果为0,否则为1
  ~ 非: 讲被操作数按位取反
    int a = 12|2; // 1100|0010 打印结果14
      1100
    |  0010
    --------
      1110
<< 左移
  int a = 8<<1; //打印16
  int为32bit
    8的二进制位:         0000 0000 0000 0000 0000 0000 0000 1000
    左移动1bit,在右边填充0: 0000 0000 0000 0000 0000 0000 0001 0000
>> 右移
  int a = 8>>1; //打印4
  int为32bit
    8的二进制位:         0000 0000 0000 0000 0000 0000 0000 1000
    右移动1bit,在右边填充0: 0000 0000 0000 0000 0000 0000 0000 0100

数学常量

Math.PI: 圆周率常量
Math.E: 自然常量
数学函数
[java] view plaincopy
abs()
  返回绝对值
ceil()
  返回一个大于等于操作数的最近整数值
  Math.ceil(8.7); //9.0
  Math.ceil(9.0); //9.0
  Math.ceil(9.0); //9.0
floor()
  返回一个不大于操作数的最近整数值
  Math.floor(8.7); //8.0
  Math.floor(9.0); //8.0
  Math.floor(9.0); //9.0
max()
  返回两个操作数的最大一个
  Math.max(1,2);
min()
  返回两个操作数的最小一个
  Math.min(1,2);
random()
  返回大于等于0.0小于1.0的随机double型
round()
  返回最接近操作数的整数(四舍五入)
toRadians()
  转换为弧度
  Math.toRadians(90.0); //1.57079...
sin()
  返回给定角度的正弦,操作数是double型
  Math.sin(Math.toRadians(90.0)); //求90度角的正弦值,返回1.0
cos()
  返回给定角度的余弦,操作数是double型
  Math.cos(Math.toRadians(0.0)); //求0度角的余弦值,返回1.0
tan()
  返回给定角度的正切,操作数是double型
  Math.tan(Math.toRadians(45.0)); //求45度角的正切值,返回1.0
sqrt()
  返回给定值的平方根,,操作数是double型
  Math.sqrt(4.0); //2.0
  Math.sqrt(-4.0); //Nan
toDegrees()
  返回给定弧度的角度值
  Math.toDegrees(Math.PI*0.5); //90.0

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2017-07-03

Java使用Math.random()结合蒙特卡洛方法计算pi值示例

本文实例讲述了Java使用Math.random()结合蒙特卡洛方法计算pi值.分享给大家供大家参考,具体如下: 一.概述 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法.是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法.与它对应的是确定性算法. 详细可参考百度百科:https://baike.baidu.com/item/%E8%92

java 简单的计算器程序实例代码

java 简单的计算器程序 实现实例: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { CalculatorFrame frame = new Calculato

Java编程实现游戏中的简单碰撞检测功能示例

本文实例讲述了Java编程中的简单碰撞检测功能.分享给大家供大家参考,具体如下: 今天在家正在写一个坦克大战的小游戏来玩,遇到了一个简单的圆和圆的碰撞检测的小问题, 碰撞检测的过程处理主要有以下三步: 1.碰撞检测(Collision Detection):返回两个或多个物体是否发生碰撞的布尔判断. 2.碰撞确定(Collision Determination):找到物体之间实际相交位置. 3.碰撞响应(Collision Response):针对两个物体之间的碰撞决定采取何种操作. 下面是关于

java贪吃蛇游戏编写代码

本文实例为大家分享了java贪吃蛇游戏展示的具体代码,供大家参考,具体内容如下 1.采用MVC(model.view.control)框架模式 2.包和类的关系树形图为: 3.源码: package com.huai; import Java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.util.HashSet; import java.util.LinkedList; import java.u

Java计算一个数加上100是完全平方数,加上168还是完全平方数

题目:一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少? 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果.请看具体分析: 程序设计: public class test { public static void main (String[]args){ long k=0; for(k=1;k<=100000l;k++) if(Math.floor(Math.sqrt(k+100))=

Java版坦克大战游戏源码示例

整理文档,搜刮出一个Java版坦克大战游戏的代码,稍微整理精简一下做下分享. package tankwar; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.File; import java.io.FileInputStream; imp

利用java、js或mysql计算高德地图中两坐标之间的距离

前言 因为工作的原因,最近在做与地图相关的应用,使用了高德地图,研究了下高德地图计算两坐标距离的方法,官网上提供的开发包中有相关的方法,但是我的产品中比较特殊,无法直接使用提供的方法,所以就自己封装了相关计算方法,供大家参考,下面话不多说了,来一起看看详细的介绍吧. Java实现 首先定义一个用于存储经纬度的类,这里起个名字叫:LngLat package amap; import java.text.DecimalFormat; import java.text.DecimalFormatSy

用Java实现小球碰壁反弹的简单实例(算法十分简单)

核心代码如下: if(addX){ x+=3; }else{ x-=3; } if(addY){ y+=6; }else{ y-=6; } if(x<=0||x>=(width-50)){ addX=!addX; } if(y<=0||y>=(height-50)){ addY=!addY; } 根据x和y递增的值,来决定角度. 以上这篇用Java实现小球碰壁反弹的简单实例(算法十分简单)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

java计算两个日期之前的天数实例(排除节假日和周末)

如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原则: 1.节假日存放在数据库中 实现步骤: 1.循环每个日期 2.判断每个日期是否为节假日或者为周末 3.若不是节假日和周末,天数+1 代码: public double calLeaveDays(Date startTime,Date endTime){ double leaveDays = 0;

Java编写迷宫小游戏

缘起: 去年(大三上学期)比较喜欢写小游戏,于是想试着写个迷宫试一下. 程序效果: 按下空格显示路径: 思考过程: 迷宫由一个一个格子组成,要求从入口到出口只有一条路径. 想了一下各种数据结构,似乎树是比较合适的,从根节点到每一个子节点都只有一条路径.假设入口是根节点,出口是树中某个子节点,那么,从根节点到该子节点的路径肯定是唯一的. 所以如果能构造一棵树把所有的格子都覆盖到,也就能够做出一个迷宫了. 另外还要求树的父节点和子节点必须是界面上相邻的格子. 在界面显示时,父节点和子节点之间共用的边

Java编写掷骰子游戏

废话不多说了,直接奔主题. **多线程&&观察者模式 题目要求:<掷骰子>窗体小游戏,在该游戏中,玩家初始拥有1000的金钱,每次输入押大还是押小,以及下注金额,随机3个骰子的点数,如果3个骰子的总点数小于等于9,则开小,否则开大,然后判断玩家是否押对,如果未押对则扣除下注金额,如果押对则奖励和玩家下注金额相同的金钱. 分析:这个题目要求灵活运用多线程的相关知识,达到点击开始按钮时,有3个线程启动,分别控制3颗骰子的转动,在3颗骰子全部转完以后,回到主线程计算游戏结果. //个

java实现五子棋小游戏

java实现五子棋小游戏 package Gomoku; import java.awt.Toolkit; import javax.swing.JFrame; public class GomokuFrame extends JFrame { //定义一个操作面板 OperatorPane op=null; public GomokuFrame() { //设置名称 this.setTitle("五子棋"); //设置窗口大小 this.setSize(510,510); //设置窗

JS实现的走迷宫小游戏完整实例

本文实例讲述了JS实现的走迷宫小游戏.分享给大家供大家参考,具体如下: 先来看看运行效果截图: 完整实例代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml

Java编程经典小游戏设计-打砖块小游戏源码

[程序中使用的数据结构和符号说明] HitBrick类 GreenBallThread控制小球路线 xUp,yUp,bouncing定义变量存储16位数值形式 x,y小球坐标 xDx,yDy坐标增量 MAX_X,MAX_Y坐标最大值 renew初始化 label标签 Rx,Ry横板坐标 Brick[]砖块 ball小球 HitBrick()定义小球横板及砖块位置坐标 keyPressd(keyEent)定义小球启动键(按空格键启动) keyReleased(keyEvent)接收键盘事件侦听器接

java实现桌球小游戏

本文实例为大家分享了java实现桌球小游戏的具体代码,供大家参考,具体内容如下 桌球小游戏 两张图片放在src的同级目录下 版本一.出现窗口 package cn.xjion.game; /** * 出现窗口 * @author xjion * */ import java.awt.*; import javax.swing.*; //继承窗口类 public class BallGame extends JFrame{ // 窗口加载的方法 void launchFrame(){ // 窗口的

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件

一.安装Pyinstaller 环境:python3.6.window10 注意事项: python64位版本打包的exe,只能在64位操作系统使用 打包文件夹和文件的名称不能用中文 pygame打包是里面的字体要改成"arial"格式. pygame.font.SysFont("宋体", 32) 32)  换成 pygame.font.SysFont('arial',32) 1.直接安装 pip命令安装:pip install Pyinstaller 安装成功后会

java猜数字小游戏案例

本文实例为大家分享了java猜数字小游戏案例,供大家参考,具体内容如下 package day08; import java.util.Scanner; public class GuessNumber { /** * 猜数字小游戏:. 需求: 随机产生一个整数数1-100(被猜数)不设置输出 * 键盘录入一个玩家要猜的数字 * 判断猜大还是猜小了或者猜中 */ public static void main(String[] args) { // 随机产生整数1-100 int number

java实现扫雷小游戏

本文实例为大家分享了java实现扫雷小游戏的具体代码,供大家参考,具体内容如下 代码: package GUI; import java.util.Random; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.awt.BorderLayout; import java.awt.GridLayo

C++实现走迷宫小游戏

本文实例为大家分享了C++实现走迷宫小游戏的具体代码,供大家参考,具体内容如下 源码下载:C++实现走迷宫小游戏 主程序代码: #include<conio.h> #include<stdlib.h> #include<time.h> #include<string.h> #include<windows.h> #include<iostream> using namespace std; char pr[10]={1,' ','E'