1、Math中四舍五入的方法

Math.ceil(double a)向上舍入,将数值向上舍入为最为接近的整数,返回值是double类型

Math.floor(double a)向下舍入,将数值向下舍入为最为接近的整数,返回值是double类型

Math.round(float a)标准舍入,将数值四舍五入为最为接近的整数,返回值是int类型

Math.round(double a)标准舍入,将数值四舍五入为最为接近的整数,返回值是long类型

2、Math中random生成随机数

Math.random()生成大于等于0,小于1的随机数

3、Random类生成随机数

两种构造方式:第一种使用默认的种子(当前时间作为种子),另一个使用long型整数为种子,Random类可以生成布尔型、浮点类型、整数等类型的随机数,还可以指定生成随机数的范围

4、BigDecimal处理小数

两种构造方式:第一种直接value写数字的值,第二种用String

import java.math.BigDecimal;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

public class TestNumber {
public static void main(String[] args){
//ceil返回大的值
System.out.println(Math.ceil(-10.1)); //-10.0
System.out.println(Math.ceil(10.7)); //11.0
System.out.println(Math.ceil(-0.7)); //-0.0
System.out.println(Math.ceil(0.0)); //0.0
System.out.println(Math.ceil(-0.0)); //-0.0
System.out.println(Math.ceil(-1.7)); //-1.0

//floor返回小的值
System.out.println(Math.floor(-10.1)); //-11.0
System.out.println(Math.floor(10.7)); //10.0
System.out.println(Math.floor(-0.7)); //-1.0
System.out.println(Math.floor(0.0)); //0.0
System.out.println(Math.floor(-0.0)); //-0.0
System.out.println(Math.floor(-1.7)); //-2.0

//round四舍五入,float返回int,double返回long
System.out.println(Math.round(10.5)); //11
System.out.println(Math.round(-10.5)); //-10

//Math生成随机数
System.out.println(Math.random());

//Random类生成随机数
Random rand=new Random();
System.out.println(rand.nextBoolean());
System.out.println(rand.nextDouble());
System.out.println(rand.nextInt());
System.out.println(rand.nextInt(10));

//Random使用当前时间作为Random的种子
Random rand2 = new Random(System.currentTimeMillis());
System.out.println(rand2.nextBoolean());
System.out.println(rand2.nextDouble());
System.out.println(rand2.nextInt());
System.out.println(rand2.nextInt(10));
System.out.println(rand2.nextInt(5));

//ThreadLocalRandom
ThreadLocalRandom rand3 = ThreadLocalRandom.current();
System.out.println(rand3.nextInt(5,10));

//BigDecimal
System.out.println(0.8 - 0.7); //0.10000000000000009
BigDecimal a1=new BigDecimal(0.1);
BigDecimal b1=new BigDecimal(0.9);
BigDecimal c1=a1.add(b1);
System.out.println("a1.add(b1)="+c1); //a1.add(b1)=1.0000000000000000277555756156289135105907917022705078125

BigDecimal a2=new BigDecimal("0.1");
BigDecimal b2=new BigDecimal("0.9");
BigDecimal c2=a2.add(b2);
System.out.println("a2="+a2); //a2=0.1
System.out.println("a2.add(b2)="+c2); //a2.add(b2)=1.0

}
}

Java中四舍五入的更多相关文章

  1. Java中四舍五入保留两位小数

    Java中四舍五入保留两位小数 方法一 四舍五入 double f = 3.15; long res = Math.round(f); #结果 res = 3 保留两位小数 double f = 3. ...

  2. java中四舍五入——double转BigDecimal的精度损失问题

    代码: double d = -123456789012345.3426;//5898895455898954895989; NumberFormat nf = new DecimalFormat(& ...

  3. java中进行四舍五入

    在oracle中有一个很好的函数进行四舍五入,round(), select round(111112.23248987,6) from dual; 但是java的Number本身不提供四舍五入的方法 ...

  4. Java中取整和四舍五入

    import java.math.BigDecimal;  import java.text.DecimalFormat; public class TestGetInt{  public stati ...

  5. java中double变量保留小数问题

    (转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...

  6. Java 中浮点数---------BigDecimal和double(初探)

    为什么要使用 bigdecimal? 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了 ...

  7. 关于java中Double类型的运算精度问题

    标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?publi ...

  8. java中常用的工具类(二)

    下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil           Java   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  9. Java中必须了解的常用类

    1.Java的包装类 基本数据类型我们都很熟悉,例如:int.float.double.boolean.char等,基本数据类型不具备对象的特征,不能调用方法,一般能实现的功能比较简单,为了让基本数据 ...

随机推荐

  1. symbol lookup error /usr/lib/x86_64-linux-gnu/libstdc++.so.6错误的解决办法

    当出现 $ apt-get: symbol lookup error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: undefined symbol: _ZNS ...

  2. Python面试题_初级版

    1.如何在一个函数内部修改全局变量 a=5 def fn(): a=4 fn() print(a) # 5 #在一个函数内部修改全局变量 a=5 def fn(): global a a=4 fn() ...

  3. SpringBoot使用策略模式+工厂模式

    为了防止大量的if...else...或switch case代码的出现,可以使用策略模式+工厂模式进行优化. 在我的项目当中,报表繁多,所以尝试了这种方式进行优化报表的架构.代码很简单,如下: Fa ...

  4. mybatis使用细节注意

    mybatis细节 增删改查ParameterType都可以不用写 解释这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数 mybatis 中 ...

  5. 思维导图MindManager的过滤主题功能如何使用

    MindManager是一款多功能思维导图工具软件.但有的思维导图繁杂,用户只需要查看自己感兴趣的主题该怎么办呢?接下来,我就为大家详细介绍MindManager思维导图2020版的过滤主题功能,可以 ...

  6. 思维导图iMindMap怎么做大型项目管理

    在大型企业中,有许多大型而复杂的项目,你要考虑内外部因素.期限以及你要达成的目标等等,所以我们要进行项目管理.下面小编教你怎么用iMindMap思维导图进行项目管理. iMindMap有一个工作区,以 ...

  7. Linux安装禅道教程

    环境: centos7 64位 禅道11.2 Linux一键安装包64位 下载: 禅道下载地址: http://dl.cnezsoft.com/zentao/11.2/ZenTaoPMS.11.2.s ...

  8. Hibernate框架session的方法

    package Test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernat ...

  9. 容器中实现拉取其它服务器的jar包程序

    缘由:在做接口自动化测试时,若业务场景有一个前置仓库,在该仓库内完成一系列的场景测试,一旦某一场景测试失败,脏数据对环境造成影响则需要清理: 1.我容器的内核系统为Debian GNU/Linux 1 ...

  10. C语言memset用法

    1.函数原型: void *memset(void *str,int c,unsigned long n): 2.参数意义: 第一个参数:数组str的起始地址:第二个参数:要赋值给数组的新值,这个值一 ...