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. 12种不宜使用的Javascript语法 ---阮一峰

    原文链接-阮一峰博客 1. == Javascript有两组相等运算符,一组是==和!=,另一组是===和!==.前者只比较值的相等,后者除了值以外,还比较类型是否相同. 请尽量不要使用前一组,永远只 ...

  2. yum 方式安装mysql (完整记录)

    2016-04-07 学习笔记,源代码安装比较麻烦,还是要尝试一下yum安装和rpm方式安装 一.检查系统是否安装老版本,有的话干掉 #yum list installed | grep mysqlm ...

  3. UnitTest_墨振文档

    目录 一.框架介绍 1 二.四大组件 2 三.ddt数据驱动 3 一.框架介绍 unittest框架是python 自带的一个作为单元测试的测试框架,在最初叫pyUnit,相当与Java语言中的Jun ...

  4. python中a+=b 和a=a+b的结果一样吗

    这里涉及到可变类型和不可变类型. 可变类型:列表,字典,集合 不可变:数字,字符串,元祖 先看一下不可变类型的运算: +=运算 >>> a, b = 1, 2 >>> ...

  5. 【VUE】6.组件通信(一)父组件向子组件传值

    1. 前提&知识点 1./components/Father.vue 是父组件, Son.vue 是子组件 2.父组件像子组件通信 props 2.组件通信 1. 新增一个路由入口 /fath ...

  6. JUC并发工具包之CyclicBarrier & CountDownLatch的异同

    1.介绍 本文我们将比较一下CyclicBarrier和CountDownLatch并了解两者的相似与不同. 2.两者是什么 当谈到并发,将这两者概念化的去解释两者是做什么的,这其实是一件很有挑战的事 ...

  7. SQL相关子查询是什么?和嵌套子查询有什么区别?

    目录 两者的各种叫法 相关子查询MySQL解释 相关子查询Wikipedia解释 相关子查询执行步骤拆解 相关子查询和嵌套查询的区别 参考资料 两者的各种叫法 相关子查询叫做:Correlated S ...

  8. phpstorm里面添加swoole代码提示

    https://yq.aliyun.com/articles/44246 下载代码: git clone https://github.com/eaglewu/swoole-ide-helper.gi ...

  9. 数学分析理论(rudin版)笔记:实数系和复数系.1

    导引 有理数集是"稀疏的"和"稠密的". 选择公理 考虑以下问题:容易找到两个无理数 a, b 使 a + b 为有理数,或者使 ab 为有理数,但是能否使得 ...

  10. centons 7 安装mysql

    1      CentOS 7 yum安装mysql 1.1    Yum 安装mysql CentOS用yum安装相对省事,省去很多配置环节 安装mysql 源 yum localinstall h ...