草庐IT

Java Number & Math 类

runoob 2023-04-06 原文

Java Number & Math 类

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。

实例

int a = 5000; float b = 13.65f; byte c = 0x4a;

然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。

所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。

包装类 基本数据类型
Boolean boolean
Byte byte
Short short
Integer int
Long long
Character char
Float float
Double double

这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。

下面是一个使用 Integer 对象的实例:

Test.java 文件代码:

public class Test{ public static void main(String[] args){ Integer x = 5; x = x + 10; System.out.println(x); } }

以上实例编译运行结果如下:

15

当 x 被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后,为了使x能进行加运算,所以要对x进行拆箱。


Java Math 类

Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。

Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

Test.java 文件代码:

public class Test { public static void main (String []args) { System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2)); System.out.println("0度的余弦值:" + Math.cos(0)); System.out.println("60度的正切值:" + Math.tan(Math.PI/3)); System.out.println("1的反正切值: " + Math.atan(1)); System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2)); System.out.println(Math.PI); } }

以上实例编译运行结果如下:

90 度的正弦值:1.0
0度的余弦值:1.0
60度的正切值:1.7320508075688767
1的反正切值: 0.7853981633974483
π/2的角度值:90.0
3.141592653589793

Number & Math 类方法

下面的表中列出的是 Number & Math 类常用的一些方法:

序号 方法与描述
1 xxxValue()
将 Number 对象转换为xxx数据类型的值并返回。
2 compareTo()
将number对象与参数比较。
3 equals()
判断number对象是否与参数相等。
4 valueOf()
返回一个 Number 对象指定的内置数据类型
5 toString()
以字符串形式返回值。
6 parseInt()
将字符串解析为int类型。
7 abs()
返回参数的绝对值。
8 ceil()
返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。
9 floor()
返回小于等于(<=)给定参数的最大整数 。
10 rint()
返回与参数最接近的整数。返回类型为double。
11 round()
它表示四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11。
12 min()
返回两个参数中的最小值。
13 max()
返回两个参数中的最大值。
14 exp()
返回自然数底数e的参数次方。
15 log()
返回参数的自然数底数的对数值。
16 pow()
返回第一个参数的第二个参数次方。
17 sqrt()
求参数的算术平方根。
18 sin()
求指定double类型参数的正弦值。
19 cos()
求指定double类型参数的余弦值。
20 tan()
求指定double类型参数的正切值。
21 asin()
求指定double类型参数的反正弦值。
22 acos()
求指定double类型参数的反余弦值。
23 atan()
求指定double类型参数的反正切值。
24 atan2()
将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。
25 toDegrees()
将参数转化为角度。
26 toRadians()
将角度转换为弧度。
27 random()
返回一个随机数。

Math 的 floor,round 和 ceil 方法实例比较

参数 Math.floor Math.round Math.ceil
1.4 1 1 2
1.5 1 2 2
1.6 1 2 2
-1.4 -2 -1 -1
-1.5 -2 -1 -1
-1.6 -2 -2 -1

floor,round 和 ceil 实例:

public class Main { public static void main(String[] args) { double[] nums = { 1.4, 1.5, 1.6, -1.4, -1.5, -1.6 }; for (double num : nums) { test(num); } } private static void test(double num) { System.out.println("Math.floor(" + num + ")=" + Math.floor(num)); System.out.println("Math.round(" + num + ")=" + Math.round(num)); System.out.println("Math.ceil(" + num + ")=" + Math.ceil(num)); } }

以上实例执行输出结果为:

Math.floor(1.4)=1.0
Math.round(1.4)=1
Math.ceil(1.4)=2.0
Math.floor(1.5)=1.0
Math.round(1.5)=2
Math.ceil(1.5)=2.0
Math.floor(1.6)=1.0
Math.round(1.6)=2
Math.ceil(1.6)=2.0
Math.floor(-1.4)=-2.0
Math.round(-1.4)=-1
Math.ceil(-1.4)=-1.0
Math.floor(-1.5)=-2.0
Math.round(-1.5)=-1
Math.ceil(-1.5)=-1.0
Math.floor(-1.6)=-2.0
Math.round(-1.6)=-2
Math.ceil(-1.6)=-1.0

有关Java Number & Math 类的更多相关文章

  1. ruby - 从源代码 : math. c:37 编译 Ruby 1.8.7 时出错:错误: token "("之前缺少二元运算符 - 2

    这真的很奇怪::josh@josh;wgetftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2:josh@josh;tarxvjfruby-1.8.7.tar.bz2:josh@josh;cdruby-1.8.7/:josh@josh;CFLAGS='-O0-g-Wall'./configure--disable-pthread:josh@josh;makegcc-O0-g-Wall-DRUBY_EXPORT-D_GNU_SOURCE=1-I.-I.-carray.c[...]gcc-O0-g-Wall-DRUBY_EXPOR

  2. ruby - 如何像 Math 模块那样定义模块方法? - 2

    Math中的方法可以像类方法一样调用:Math.cos(0)但也可以是include-d像实例方法:includeMathcos(0)相比之下,以下模块只能以一种方式调用,而不能以另一种方式调用:moduleFoodefbarendendFoo.bar()#NoMethodErrorforthiscallincludeFoobar()#butthiscallisfine单例方法:moduleFoodefself.barendendFoo.bar()#thiscallisfineincludeFoobar()#butnotthisone知道如何编写像Math这样的模块吗?

  3. ruby - 为什么 Math.sqrt(i*i).floor == i? - 2

    我想知道这是不是真的:当我对一个平方整数求平方根时,就像在f=Math.sqrt(123*123)我将得到一个非常接近123的float。由于浮点表示精度,这可能类似于122.99999999999999999999或123.000000000000000000001。因为floor(122.999999999999999999)是122,我应该得到122而不是123。所以我希望floor(sqrt(i*i))==i-1在大约50%的情况下。奇怪的是,对于我测试过的所有数字,floor(sqrt(i*i)==i。这是一个用于测试前1亿个数字的小ruby​​脚本:100_000_000.

  4. ruby - Ruby 中 Math Power (**) 的反面是什么? - 2

    我想知道如何在Ruby中获得幂的倒数?2**4#=>16然后我想得到它的逆,但我不确定要使用哪个运算符16??2#=>4 最佳答案 指数的倒数是对数。如果ab=c,然后logac=b.您可以在Math中找到对数函数模块,特别是log()对于base-e和log10()以10为基数。要获得以不同为底的对数(例如n),请使用公式logNa=logxa/logxN,其中x是一个值,例如e或10。针对您的特定案例:log216=loge16/loge2=Math.log(16)/Math.log(2)=4你认为这个解释是好的是因为它扩展了你

  5. javascript - MathJax:如何删除 "Typesetting math: 100%"显示消息 - 2

    我正在使用MathJax来呈现一些数学。我如何摆脱左下角的这条消息?我在MathJax的docs中找不到这个. 最佳答案 这是一个状态栏。每MathJax-Docs,您可以在加载mathjax之前通过将消息样式设置为none来关闭它:MathJax.Hub.Config({messageStyle:"none"}); 关于javascript-MathJax:如何删除"Typesettingmath:100%"显示消息,我们在StackOverflow上找到一个类似的问题:

  6. javascript - 为什么在 Math.max 上调用 apply 有效而没有它则无效 - 2

    如果你让我获取数组的最大值,我会这样做:varnums=[66,3,8,213,965,1,453];Math.max.apply(Math,nums);当然,我也可以这样做:nums.sort(function(a,b){returna-b}.pop(nums.length);但我必须诚实。我需要知道为什么有效-使用.apply(Math,nums)。如果我这样做:Math.max(nums);那是行不通的。通过使用apply,我传入Math作为this-以及数组的nums。但我想知道前者有效而后者无效的“为什么”的复杂性。发生了什么魔法?有一些基本的东西我没有全神贯注。我已经阅读了

  7. Javascript - for 循环中的 Math.random - 2

    刚刚在Javascript中尝试在for循环的条件(这就是所谓的?)中生成随机数时遇到了一些有趣的事情。所以,如果我要编写这样的代码:for(vari=0;i它会返回这样的结果:958332684456335345311但是如果我要在第二个for循环之前在变量中生成一个随机数:for(vari=0;i它会返回这样的结果:11131421919171921851518211916151320这里究竟发生了什么?这让我困惑了一会儿。for循环中的Math.random()是否在每次迭代后生成一个新的随机数?循环是否运行代码、迭代和检查条件,并在每次检查条件时生成一个新的随机数?这就是正在发

  8. javascript - 为什么 Math.pow(1, NaN) 在 JavaScript 中等于 NaN? - 2

    在IEEE754-2008节"9.2.1Specialvalues"有提到pow(+1,y)is1foranyy(evenaquietNaN)如果没有阅读整个文档,维基百科给出了shortcut:The2008versionoftheIEEE754standardsaysthatpow(1,qNaN)andpow(qNaN,0)shouldbothreturn1sincetheyreturn1whateverelseisusedinsteadofquietNaN.为什么Math.pow(1,NaN)在JavaScript中是NaN?不符合标准吗? 最佳答案

  9. javascript - 我如何预测 Math.random 结果? - 2

    如果轮盘游戏网站csgopolygon.com正在调用Math.random和Math.floor,我如何预测它的结果? 最佳答案 您认为在理论上可以预测Math.random结果的直觉是正确的。这就是为什么,如果你想构建一个游戏/赌博应用程序,你应该确保使用cryptographicallysecurepseudo-randomnumbergenerator.如果他们正在使用这样的东西,那就别管它了。但是,如果您是正确的,并且他们使用System.time作为Java附带的标准随机数生成器的种子,那么可能有办法。这将涉及生成数百万

  10. javascript - 当 a 为负数且 b 为非整数时,为什么 Math.pow(a, b) 为 NaN? - 2

    这个问题在这里已经有了答案:Math.powwithnegativenumbersandnon-integerpowers(2个答案)关闭8年前。我观察到以下Javascript行为:>Math.pow(4,2)16>Math.pow(4,2.1)18.37917367995256>Math.pow(4,0.5)2>Math.pow(-4,2)16>Math.pow(-4,2.1)NaN>Math.pow(-4,0.5)NaN为什么给一个负数和一个非整数但有理数,使Math.pow返回NaN?例如,为什么Math.pow(4,0.5)不是NaN而是Math.pow(4,-0.5)是Na

随机推荐