测试

package Cynical_Gary;

public class Cynical_Text {
public static void main(String[] args){
System.out.println("30°对应的弧度是:"+Math.toRadians(30));
System.out.println("π/6对应的角度是:"+Math.toDegrees(Math.PI/6));
System.out.println("45°对应的弧度是:"+Math.toRadians(45));
System.out.println("π/4对应的角度是:"+Math.toDegrees(Math.PI/4));
}
} /*
输出:
30°对应的弧度是:0.5235987755982988
π/6对应的角度是:29.999999999999996
45°对应的弧度是:0.7853981633974483
π/4对应的角度是:45.0
*/

角度和弧度的转换

package Cynical_Gary;

public class Cynical_Text {
public static void main(String[] args){
System.out.println("30°对应的正弦值是:"+Math.sin(Math.PI/6)); //计算30°的正弦值
System.out.println("30°对应的余弦值是:"+Math.cos(Math.PI/6)); //计算30°的余弦值
System.out.println("30°对应的正切值是:"+Math.tan(Math.PI/6)); //计算30°的正切值
}
} /*
输出
30°对应的正弦值是:0.49999999999999994
30°对应的余弦值是:0.8660254037844387
30°对应的正切值是:0.5773502691896257
*/

三角函数的转换

package Cynical_Gary;

public class Gary_Text {
public static void main(String[] args){
System.out.println("0.5的反正弦值是:"+Math.asin(0.5)); //计算0.5的反正弦值
System.out.println("0.866的反余弦值是:"+Math.acos(0.866)); //计算0.866的反余弦值
System.out.println("0.5774的反正切值是:"+Math.atan(0.5774)); //计算0.5774的反正切值
} } /*
输出:
0.5的反正弦值是:0.5235987755982989
0.866的反余弦值是:0.5236495809318289
0.5774的反正切值是:0.5236360729028994
*/

反三角函数的转换

package CynicalGary;

public class Gary_Text {

        public static void main(String[] args) {
System.out.println("30°的双曲正弦值:"+Math.sinh(30)); //计算30°的双曲正弦值
System.out.println("30°的双曲余弦值:"+Math.cosh(30)); //计算30°的双曲余弦值
System.out.println("30°的双曲正切值:"+Math.tanh(30)); //计算30°的双曲正切值
}
} /*
输出
30°的双曲正弦值:5.343237290762231E12
30°的双曲余弦值:5.343237290762231E12
30°的双曲正切值:1.0
*/

双曲函数的转换

package Cynical_Gary;

public class Gary_Text {
public static void main(String[] args){
System.out.println("8的立方根是:"+Math.cbrt(8));
System.out.println("e的8次方是:"+Math.exp(8));
System.out.println("e的9次方是:"+Math.expm1(8));
System.out.println("8的自然对数是:"+Math.log(8));
System.out.println("8的10为底的对数是:"+Math.log10(8));
System.out.println("9的自然对数是:"+Math.log1p(8));
System.out.println("2的3次方是:"+Math.pow(2,3));
System.out.println("8的平方根是:"+Math.sqrt(8));
} } /*
输出:
8的立方根是:2.0
e的8次方是:2980.9579870417283
e的9次方是:2979.9579870417283
8的自然对数是:2.0794415416798357
8的10为底的对数是:0.9030899869919435
9的自然对数是:2.1972245773362196
2的3次方是:8.0
8的平方根是:2.8284271247461903
*/

指数与对数的转换

package CynicalGary;

import java.math.BigInteger;

public class Gary_Text {

        public static void main(String[] args) {
BigInteger number1 = new BigInteger("987654321"); //申明高精度整数number1
BigInteger number2 = new BigInteger("123456789"); //申明高精度整数number2
BigInteger addition = number1.add(number2); //计算number1加number2
BigInteger subtraction = number1.subtract(number2);//计算number1减number2
BigInteger multiplication = number1.multiply(number2);//计算number1乘number2
BigInteger division = number1.divide(number2);//计算number1除number2
System.out.println("高精度整数number1:"+number1);
System.out.println("高精度整数number2:"+number2);
System.out.println("高精度加法:"+addition);
System.out.println("高精度减法:"+subtraction);
System.out.println("高精度乘法:"+multiplication);
System.out.println("高精度除法:"+division);
}
} /*
输出
高精度整数number2:123456789
高精度加法:1111111110
高精度减法:864197532
高精度乘法:121932631112635269
高精度除法:8
*/

高精度整数运算

Java中的BigInteger类虽然能大幅度提高运算的精度,但是却牺牲性能,对于普通运算不推荐使用(但相对于C用char数值来模拟大数运算,不得不说Java在ACM中解决大数问题处于很大优势地位)

package CynicalGary;

import java.math.BigDecimal;
import java.math.RoundingMode; public class Gary_Text { public static void main(String[] args) {
BigDecimal number1 = new BigDecimal("9.87654321"); //申明高精度浮点数number1
BigDecimal number2 = new BigDecimal("1.23456789"); //申明高精度浮点数number2
BigDecimal addition = number1.add(number2); //计算number1加number2
BigDecimal subtraction = number1.subtract(number2);//计算number1减number2
BigDecimal multiplication = number1.multiply(number2);//计算number1乘number2
BigDecimal division = number1.divide(number2,RoundingMode.HALF_UP);//计算number1除number2
//以四舍五入的方式获得高精度运算的结果
System.out.println("高精度浮点数number1:"+number1);
System.out.println("高精度浮点数number2:"+number2);
System.out.println("高精度加法:"+addition);
System.out.println("高精度减法:"+subtraction);
System.out.println("高精度乘法:"+multiplication);
System.out.println("高精度除法:"+division);
}
} /*
输出
高精度浮点数number2:1.23456789
高精度加法:11.11111110
高精度减法:8.64197532
高精度乘法:12.1932631112635269
高精度除法:8.00000007
*/

高精度浮点运算

Java中的BigDecimal类同理BigInteger类,牺牲了速度,但换来了精度。

package Cynical_Gary;

import java.util.Random;

public class Gary_Text {
public static void main(String[] args){
for(int i=0;i<7;i++)
{
int number = new Random().nextInt((int)Math.pow(10,7)); //生成随机数
String Number = ""+number;
while(Number.length()<7){
Number="0"+number; //如果随机长度不够7位用0补齐
}
System.out.println(Number);
}
}
} /*
输出:
0910840
6974776
7981768
9823061
3303485
8317801
9042881 */

(伪)随机数生成

//Math.abs()此方法返回一个整数的绝对值

package Cynical_Gary;

public class Gary_Text {
public static void main(String[] args){
System.out.println(Math.abs(-2147483648));
}
} /*
输出:
-2147483648 原因: java 32位int的值域为(-2147483648,2147483647]
最大值为:2147483647, 二进制:01111111111111111111111111111111
最小值为:-2147483648,二进制:10000000000000000000000000000000 -2147483648的二进制正码:10000000000000000000000000000000
-2147483648的二进制反码:01111111111111111111111111111111
-2147483648的二进制反码+1:10000000000000000000000000000000 二进制数字和原来的一样了
*/

有趣的Math.abs()

一、角度和弧度转换

 30°正弦值    Math.sin(Math.PI/6));
30°余弦值 Math.cos(Math.PI/6));
30°正切值 Math.tan(Math.PI/6));

Math.toRadians()方法用于将角度转换为弧度(静态方法)

public static double toRadians(double angdeg)

  angdeg:用角度表示的角

   返回值:角angdeg用弧度表示的值

Math.toDegrees()方法用于将弧度转换为角度(静态方法)

public static double toDegress(double angrad)

  angrad:用弧度表示的角

  返回值:角angrad用角度表示的值

二、三角函数的转换

 30°正弦值    Math.sin(Math.PI/6)
30°余弦值 Math.cos(Math.PI/6)
30°正切值 Math.tan(Math.PI/6)

Math.sin()方法用于求指定角的正弦值(静态方法)

public static double sin(double a)

  a:用弧度表示的角

  返回值:角a的正弦值

Math.cos()方法用于求指定角的余弦值(静态方法)

public static double cos(double a)

  a:用弧度表示的角

  返回值:角a的余弦值

Math.tan()方法用于求指定角的正切值(静态方法)

public static double tan(double a)

  a:用弧度表示的角

  返回值:角a的正切值

三、反三角函数的转换 

0.5的反正弦值        Math.asin(0.5)
0.5的反正弦值   Math.asin(0.5)
0.5774的反正切值 Math.atan(0.5774)

Math.asin()方法用于返回指定值的反正弦值(静态方法)

public static double asin(double a)

  a:要返回其反正弦的值

  返回值:值a的反正弦值

Math.acos()方法用于返回指定值的反余弦值(静态方法)

public static double acos(double a)

  a:要返回其反余弦的值

  返回值:值a的反余弦值

Math.atan()方法用于返回指定值的反正切值(静态方法)

public static double atan(double a)

  a:要返回其反正切的值

  返回值:值a的反正切值

 

四、双曲函数的转换

30°双曲正弦值    Math.sinh(30)
30°双曲余弦值 Math.cosh(30)
30°双曲正切值 Math.tanh(30)

Math.sinh()方法用于返回指定值的双曲正弦值(静态方法)

public static double sinh(double a)

  a:要返回双曲正弦值的数值

  返回值:值a的双曲正弦值

Math.cosh()方法用于返回指定值的双曲余弦值(静态方法)

public static double cosh(double a)

  a:要返回双曲余弦值的数值

  返回值:值a的双曲余弦值

Math.tanh()方法用于返回指定值的双曲正切值(静态方法)

public static double tanh(double a)

  a:要返回双曲正切值的数值

  返回值:值a的双曲正切值

五、指数与对数的转换

8的立方根        Math.cbrt(8)
e的8次方 Math.exp(8)
e的9次方 Math.expm1(8)
8的自然对数 Math.log(8)
8的10为底的对数 Math.log10(8)
9的自然对数 Math.log1p(8)
2的3次方 Math.pow(2,3)
8的平方根 Math.sqrt(8)

六、随机数的生成

Random.setSeed()方法使用单个long种子,设置此随机数生成器的种子值

public void setSeed(long seed)

  seed:为随机数生成器设置的种子值

Random.nextInt()方法用于返回一个伪随机数,它取此随机数生成器序列0(包括0)和指定值(不包括)之间均匀分布的Int值

public int nextInt(int n)

  n:要返回随机数的范围,必须是整数

  返回值:下一个伪随机数

Java基础__Java中常用数学类Math那些事的更多相关文章

  1. Java基础__Java中自定义集合类

    Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...

  2. Java基础__Java中异常处理那些事

    一.Exception 类的层次 所有的异常类是从 java.lang.Exception 类继承的子类. Exception 类是 Throwable 类的子类.除了Exception类外,Thro ...

  3. Java基础__Java中集合类

    ArrayList:有序.可重复.线程不安全.内部使用数组进行存储 LinkedList:有序.可重复.线程不安全.内部使用引用进行存储[可以很方便的进行插入.删除数据] Vector:有序.可重复. ...

  4. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  5. JDBC中常用的类和接口

    <零基础学Java> JDBC中常用的类和接口 利用JDBC的这些类和接口可以更方便地访问并处理存储在数据库中的数据. DriverManager类 DriverManager类 是JDB ...

  6. java在acm中常用基础技巧方法

    java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input input-std @Frosero import java.util.*; public class Main { ...

  7. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  8. 简单了解Spring中常用工具类_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...

  9. Java基础(中)

    面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题. 面向对象会先抽象出对象,然后用对象执行方法的方式 ...

随机推荐

  1. MySQL的事务和锁

    MySQL的事务和锁   阅读目录 什么是事务 事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再 ...

  2. Codeforces 1201E2. Knightmare (hard)

    传送门 看到棋盘先黑白染色冷静一下 然后分析发现,如果初始时两只马在同色的格子,那么一定是后手吃先手 反之一定是先手吃后手 所以分类讨论一下,如果初始在同色的格子,并且后手到达终点的步数更少,那么后手 ...

  3. 关于redis的几件小事(六)redis的持久化

    1.redis持久化的意义 redis持久化的意义,在于 故障恢复 . 如果没有对数据进行持久化,那么如果redis遇到灾难性的故障,就会丢失所有的数据. 如果通过redis的持久化机制将数据持久化到 ...

  4. 优秀java博客

    https://www.jianshu.com/p/efb58b7115bf?utm_source=tuicool https://www.nowcoder.com/discuss/110317 ht ...

  5. js判断变量是否为undefined

    可能很多朋友认为undefined是在js中未定义变量时才会提示的错误,其实不然undefined 是js中的一特殊的变量,我们也可以提前定义哦,下面我来介绍js undefined 用法. Java ...

  6. ubuntu终端安装最新ss

    有时候因为加密方式比较新,比如aes-256-gcm,导致旧版本的不能用 一句命令安装ss最新版本 aes-256-gcm加密方式可以用,没毛病

  7. Object Pascal异常的种类

  8. Python with open 使用技巧

    在使用Python处理文件的是,对于文件的处理,都会经过三个步骤:打开文件->操作文件->关闭文件.但在有些时候,我们会忘记把文件关闭,这就无法释放文件的打开句柄.这可能觉得有些麻烦,每次 ...

  9. 标准C语言(12)

    一个存储区的地址应该是它自身大小的整数倍(双精度浮点类型存储区的地址只需要是4的整数倍),这个规则叫数据对齐,结构体内部的存储区通常也需要遵守数据对齐的规则,数据对齐有可能导致结构体相邻子存储区之间有 ...

  10. Java 基础知识点滴(1)

    1. ==与equals的区别 ==是用来判断两个变量的值是否相等.要比较两个基本变量或引用变量是否相等,只能用==: equal用来判断两个独立对象里面的内容是否一样. 例子: String s1 ...