精华内容
下载资源
问答
  • java四舍五入整数的方法

    万次阅读 2018-05-23 15:00:07
    java的Math类中,提供了许许多多的和数学计算有关的方法,其中也包括取整的... 但是,其中和四舍五入相近的方法只有rint和round方法,如果单独使用这两个方法的话,所得到的结果和我们预期的结果不一样, 比如r...

        在java的Math类中,提供了许许多多的和数学计算有关的方法,其中也包括取整的,关于取整的有向下取整的floor(double d)返回值double,rint(double d),round(double d)和round(float f)。


        但是,其中和四舍五入相近的方法只有rint和round方法,如果单独使用这两个方法的话,所得到的结果和我们预期的结果不一样,

        比如round(-1.5)所得到的结果是-1,而不是我们预期的-2;

        而rint(-1.5)得到的结果是-2.0,但是rint(2.5)得到的结果却是2.0,和我们预期的3.0也不一样

        我们分析一下为什么会这样子,首先看一下round方法的API:

    Returns the result of rounding the argument to an integer. The result is equivalent to (long) Math.floor(d+0.5).

    Special cases:

    • round(+0.0) = +0.0
    • round(-0.0) = +0.0
    • round((anything > Long.MAX_VALUE) = Long.MAX_VALUE
    • round((anything < Long.MIN_VALUE) = Long.MIN_VALUE
    • round(+infinity) = Long.MAX_VALUE
    • round(-infinity) = Long.MIN_VALUE
    • round(NaN) = +0.0
    Parameters
    d the value to be rounded.
    Returns
    • the closest integer to the argument.

    即返回一个和参数相近的整型,其结果相当于(long) Math.floor(d+0.5)的值,对于Math.floor(double d)方法,其结果是d向下取整,所以对于round(-1.5)来说,它的返回值是要加上0.5再向下取整,也就是-1.5+0.5=-1.0,1.0向下取整还是1.0,所以返回的是长整型1,但是计算正数的时候就没有这个问题。比如说round(1.5),计算的就是(long)(1.5+0.5)=(long)2.0=2L,所以对于round方法来说对于负数四舍五入所得到的结果是不正确的。


        然后我们来看一下rint方法的API,这个方法与四舍五入差的有点远。

    public static double rint (double d)

    Added in API level 1

    Returns the double conversion of the result of rounding the argument to an integer. Tie breaks are rounded towards even.

    Special cases:

    • rint(+0.0) = +0.0
    • rint(-0.0) = -0.0
    • rint(+infinity) = +infinity
    • rint(-infinity) = -infinity
    • rint(NaN) = NaN
    Parameters
    dthe value to be rounded.
    Returns
    • the closest integer to the argument (as a double).


        这个方法也是返回一个和参数相近的整型,当有两个整数的时候,会返回偶数的那个。

    也就是说,当遇到几点五的时候,才会遇到两个整数,所以对于rint(-1.5)来说,会有-1.0和-2.0两个整数与-1.5相近,但是他会取偶数-2.0,。对于rint(-1.3)只有一个整数-1.0与-1.3接近,所以此时不会有误差。但是对于rint(2.5),有2.0和3.0与2.5接近,他会返回与我们预期不一样的偶数2.0,rint(-2.5)会返回-2.0,所以对于rint方法,当遇到偶数点五的时候,结果会不一样。

        综合上述,如果想用round方法就得解决负数问题,所以可以用绝对值Math.abs方法来解决。下面为代码:

    方法一:

    public double run(double num){
        double a=Math.signum(num); //判断是正数负数还是0,负数返回-1.0,正数返回1.0
        if(a<0.0)
            return 0.0-Math.round(Math.abs(num));
        return Math.round(num);
    }

        如果想用rint方法就得解决偶数点五的问题,下面为代码:

    方法二:

    public double run(double num){
       if(Math.floor(Math.abs(num))%2!=0)
           return Math.rint(num);
       if(five(num))
           if(Math.signum(num)<0.0)
           return Math.rint(num)-1.0;
       else if(Math.signum(num)>0.0)
           return Math.rint(num)+1.0;
       return Math.rint(num);
    
    }
    public boolean five(double n){
        String[] split = String.valueOf(n).split("\\.");
        if(split[1].startsWith("5"))
            return true;
        else return false;
    }

        当然也有其他方法,比如用保留小数的方法string的格式化方法都行   

    因为方法二效率低,所以建议使用方法一。

    本人第一次写博客,还是学生,所以有不足之处请指正,请谅解不足或错误之处,谢谢!

    展开全文
  • Redis简介 Redis与Memcached区别 Redis优点 Redis缺点 Redis数据类型 String Hash List Set Sorted set Redis事务 MULTI&EXEC(原子执行,并非互斥) WATCH&UNWATCH(原子执行+乐观锁) ...触发方式

    Redis简介

    • Redis与Memcached区别
    • Redis优点
    • Redis缺点

    image

    Redis数据类型

    • String
    • Hash
    • List
    • Set
    • Sorted set

    image

    Redis事务

    • MULTI&EXEC(原子执行,并非互斥)
    • WATCH&UNWATCH(原子执行+乐观锁)

    image

    Redis分布式锁

    • 排他锁 SETNX
    • 带有超时特性的锁

    image

    Redis持久化机制

    • RDB(Redis Database,全量模式)
    • AOF(Append Only File,增量模式)
    • 触发方式
    • 相互比较
    • RDB最佳策略
    • AOF最佳策略
    • Redis消息队列

    image

    Redis高级数据结构

    • BitMap(String的一些其他命令)
    • 过期策略
    • 内存淘汰策略
    • 主从复制(数据是同步的,类似于MySQL Replication)
    • 哨兵 sentinel(数据是同步的)
    • 集群(数据是分片的,sharing)
    • Hash映射(并非一致性哈希,而是哈希槽)
    • 数据分片
    • 节点间通信协议——Gossip
    • 主从选举——Raft
    • 功能限制
    • 数据迁移/在线扩容
    • Codis
    • twemproxy

    image

    配置文件+应用场景+Lua脚本+与DB保持一致

    image

    Redis源码

    • 线程模型——单线程
    • RedisObject

    image

    这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

    最后

    针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

    最新整理面试题
    在这里插入图片描述

    上述的面试题答案都整理成文档笔记。
    也还整理了一些面试资料&最新2021收集的一些大厂的面试真题,有需要的可以点击这里,免费获取

    最新整理电子书

    在这里插入图片描述

    最新整理大厂面试文档

    在这里插入图片描述

    中…(img-9KtEJePd-1625663113123)]

    最新整理大厂面试文档

    [外链图片转存中…(img-BQGDlv8a-1625663113124)]

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    展开全文
  • Java中数字的四舍五入和取整

    千次阅读 2020-06-18 17:31:15
    Java中对数字进行四舍五入或取整处理经常使用Math库中的三个方法: ceil floor round 1 ceil 向上取整 ceil英文释义:天花板。天花板在上面,所以是向上取整,好记了。 Math.ceil 函数接收一个double类型的参数...

    Java中对数字进行四舍五入或取整处理经常使用Math库中的三个方法:

    • ceil
    • floor
    • round

    1 ceil 向上取整

    ceil英文释义:天花板。天花板在上面,所以是向上取整,好记了。

    Math.ceil 函数接收一个double类型的参数,用于对数字进行向上取整(遇小数进1),即返回一个大于或等于传入参数的最小整数(但还是以double类型返回)。

    2 floor 向下取整

    floor英文释义:地板。地板在下面,所以是向下取整,好记了。

    Math.floor 函数接收一个double类型的参数,用于对数字进行向下取整(遇小数忽略),即返回一个小于或等于传入参数的最大整数(但还是以double类型返回)。

    3 round 四舍五入

    round英文释义:附近。一个小数附近的整数,想象一下参数在数轴上的位置,是离哪头的整数近就取哪头的整数,那就是四舍五入,好记了。

    Math.round 函数接收一个floatdouble类型的参数,用于对数字进行四舍五入,即返回一个离传入参数最近的整数(如果传入参数是float返回int类型结果,如果传入参数是double返回long类型结果)。

    4 案例

    以上三个方法,举例如下:

    public class Number {
        public static void main(String[] args){
            System.out.println("1.0 ceil:"+Math.ceil(1.0));
            System.out.println("1.1 ceil:"+Math.ceil(1.1));
            System.out.println("1.6 ceil:"+Math.ceil(1.6));
            System.out.println("1.4 floor:"+Math.floor(1.4));
            System.out.println("1.6 floor:"+Math.floor(1.6));
            System.out.println("1.1 round:"+Math.round(1.1f));
            System.out.println("1.6 round:"+Math.round(1.6d));
        }
    }
    

    运行结果:
    在这里插入图片描述

    展开全文
  • java整数java四舍五入的方法

    千次阅读 2015-07-30 10:03:00
    round 则是45入的计算,round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。    Math.floor...
    ava代码   收藏代码
    1. floor 向下取整   
    2. ceil  向上取整   
    3. round 则是45入的计算,round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。   
    4.   
    5. Math.floor(1.4)=1.0   
    6. Math.round(1.4)=1   
    7. Math.ceil(1.4)=2.0   
    8. Math.floor(1.5)=1.0   
    9. Math.round(1.5)=2   
    10. Math.ceil(1.5)=2.0   
    11. Math.floor(1.6)=1.0   
    12. Math.round(1.6)=2   
    13. Math.ceil(1.6)=2.0   
    14. Math.floor(-1.4)=-2.0   
    15. Math.round(-1.4)=-1   
    16. Math.ceil(-1.4)=-1.0   
    17. Math.floor(-1.5)=-2.0   
    18. Math.round(-1.5)=-1   
    19. Math.ceil(-1.5)=-1.0   
    20. Math.floor(-1.6)=-2.0   
    21. Math.round(-1.6)=-2   
    22. Math.ceil(-1.6)=-1.0   



    摘自:http://blog.csdn.net/biexf/article/details/5958697 

    备注:不管是java还是js,若是整数除以整数,小数部分将被舍弃。如下: 
    1.丢弃小数部分,保留整数部分 
    parseInt(5/2) 

    2.向上取整,有小数就整数部分加1 

    Math.ceil(5/2) 

    3,四舍五入. 

    Math.round(5/2) 

    4,向下取整 

    Math.floor(5/2) 


    Math 对象的方法 

    FF: Firefox, N: Netscape, IE: Internet Explorer 
    方法 描述 FF N IE 
    abs(x) 返回数的绝对值 1 2 3 
    acos(x) 返回数的反余弦值 1 2 3 
    asin(x) 返回数的反正弦值 1 2 3 
    atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值 1 2 3 
    atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间) 1 2 3 
    ceil(x) 对一个数进行上舍入。 1 2 3 
    cos(x) 返回数的余弦 1 2 3 
    exp(x) 返回 e 的指数。 1 2 3 
    floor(x) 对一个数进行下舍入。 1 2 3 
    log(x) 返回数的自然对数(底为e) 1 2 3 
    max(x,y) 返回 x 和 y 中的最高值 1 2 3 
    min(x,y) 返回 x 和 y 中的最低值 1 2 3 
    pow(x,y) 返回 x 的 y 次幂 1 2 3 
    random() 返回 0 ~ 1 之间的随机数 1 2 3 
    round(x) 把一个数四舍五入为最接近的整数 1 2 3 
    sin(x) 返回数的正弦 1 2 3 
    sqrt(x) 返回数的平方根 1 2 3 
    tan(x) 返回一个角的正切 1 2 3 
    toSource() 代表对象的源代码 1 4 - 
    valueOf() 返回一个 Math 对象的原始值 
    摘自:http://cooler1217.iteye.com/blog/1330043

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    实现java取整和四舍五入的代码如下

     

       import java.math.BigDecimal;

       import java.text.DecimalFormat;

       

       public class TestGetInt{

       public static void main(String[] args){

       double i=2, j=2.1, k=2.5, m=2.9;

       System.out.println("舍掉小数取整:Math.floor(2)=" + (int)Math.floor(i));

       System.out.println("舍掉小数取整:Math.floor(2.1)=" + (int)Math.floor(j));

       System.out.println("舍掉小数取整:Math.floor(2.5)=" + (int)Math.floor(k));

       System.out.println("舍掉小数取整:Math.floor(2.9)=" + (int)Math.floor(m));

       /* 这段被注释的代码不能正确的实现四舍五入取整

       System.out.println("四舍五入取整:Math.rint(2)=" + (int)Math.rint(i));

       System.out.println("四舍五入取整:Math.rint(2.1)=" + (int)Math.rint(j));

       System.out.println("四舍五入取整:Math.rint(2.5)=" + (int)Math.rint(k));

       System.out.println("四舍五入取整:Math.rint(2.9)=" + (int)Math.rint(m));

       System.out.println("四舍五入取整:(2)=" + new DecimalFormat("0").format(i));

       System.out.println("四舍五入取整:(2.1)=" + new DecimalFormat("0").format(i));

       System.out.println("四舍五入取整:(2.5)=" + new DecimalFormat("0").format(i));

       System.out.println("四舍五入取整:(2.9)=" + new DecimalFormat("0").format(i));

       */

       System.out.println("四舍五入取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_UP));

       System.out.println("四舍五入取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_UP));

       System.out.println("四舍五入取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_UP));

       System.out.println("四舍五入取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_UP));

       

       System.out.println("凑整:Math.ceil(2)=" + (int)Math.ceil(i));

       System.out.println("凑整:Math.ceil(2.1)=" + (int)Math.ceil(j));

       System.out.println("凑整:Math.ceil(2.5)=" + (int)Math.ceil(k));

       System.out.println("凑整:Math.ceil(2.9)=" + (int)Math.ceil(m));

       

       System.out.println("舍掉小数取整:Math.floor(-2)=" + (int)Math.floor(-i));

       System.out.println("舍掉小数取整:Math.floor(-2.1)=" + (int)Math.floor(-j));

       System.out.println("舍掉小数取整:Math.floor(-2.5)=" + (int)Math.floor(-k));

       System.out.println("舍掉小数取整:Math.floor(-2.9)=" + (int)Math.floor(-m));

       System.out.println("四舍五入取整:(-2)=" + new BigDecimal("-2").setScale(0, BigDecimal.ROUND_HALF_UP));

       System.out.println("四舍五入取整:(-2.1)=" + new BigDecimal("-2.1").setScale(0, BigDecimal.ROUND_HALF_UP));

       System.out.println("四舍五入取整:(-2.5)=" + new BigDecimal("-2.5").setScale(0, BigDecimal.ROUND_HALF_UP));

       System.out.println("四舍五入取整:(-2.9)=" + new BigDecimal("-2.9").setScale(0, BigDecimal.ROUND_HALF_UP));

       

       System.out.println("凑整:Math.ceil(-2)=" + (int)Math.ceil(-i));

       System.out.println("凑整:Math.ceil(-2.1)=" + (int)Math.ceil(-j));

       System.out.println("凑整:Math.ceil(-2.5)=" + (int)Math.ceil(-k));

       System.out.println("凑整:Math.ceil(-2.9)=" + (int)Math.ceil(-m));

       }

       }

    展开全文
  • Java中实现四舍五入保留有效位数

    千次阅读 2019-09-17 19:11:04
    四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了。在讲解之间我们先看如下一个经典的案例: public static void main(String[] args) { System.out.println("12.5的...
  • 一.java种取整数的方式 1.直接使用强制转换 public static void roundOne(){ System.out.println("正数:(int)10.12 = " + (int)10.12); System.out.println("负数:(int)-10.12 = " + (int)-10.12); S
  • java 四舍五入保留小数点后两位

    千次阅读 2020-10-10 09:55:53
    方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f);... public BigDecimal setScale(int newScale, int roundingMode) //int newScale 为小数点后保留的位数, int roundingMode 为变量进
  • 这里以保留两位小数为例,每种方法用了三个测试数据,并给出对应结果。 import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; public class Demo { public static ...
  • java 四舍五入保留小数的几种方式

    千次阅读 2018-11-22 10:37:19
    Math.round(x) 返回对参数x四舍五入后所得的整数近似值,通过如下例子做说明 1、小数点后第一位=5 正数:Math.round(11.5)=12 负数:Math.round(-11.5)=-11 2、小数点后第一位 正数:Math.round(11.46)=11 ...
  • Java取整函数 四舍五入函数

    万次阅读 2016-01-21 09:58:31
    简介 Math类中提供了5个与取整相关的函数,如下所示: static double ceil(double a):天花板函数,返回大于等于a的最小整数(但是以浮点数形式存储)。...static double rint(double a):四舍五入函数,返
  • (若想保留多位,只需将"%.2f"中的2改为想保留个数) System.out.println("----------第一种使用Printf打印---------------"); double a = 3.1456; System.out.printf("%.2f",a); 2、String.forma...
  • Java四舍五入保留小数点位数

    千次阅读 2019-03-02 21:19:13
    但是当想要直接选定保留到小数点后n位时,写作0.00000…0总感觉有些烦,BigDecimal就提供了更好的方法,这个方法不仅可以直接写想要保留的小位数,还可以选定想用的四舍五入模式; /** * 保留固定位数小数 * ...
  • java四舍五入

    千次阅读 2019-01-23 14:34:01
    一.BigDecimal中包涵了四舍五入,上下取整,保留小位数等方法 BigDecimal下有个坑,当传入浮点类型新建BigDecimal时,生成的BigDecimal对象会产生小数位偏差,当进行四舍五入的时候,建议BigDecimal不要传入浮点数类型,...
  • * 数据计算结果处理(四舍五入保留一位小数) * @param member 分子 * @param denominator 分母 * @return */ public static String dateProcessing(int member,int denominator){ floa...
  • java 常用四舍五入保留小数点后两位方法 1 . Math.round double num = Math.round(5.2544555 * 100) * 0.01; System.out.println(num); 输出结果为:5.25 round函数的作用是四舍五入得到整数,通过乘于100,之后再...
  • Java使四舍五入保留N位小数的方法

    千次阅读 2017-05-17 10:05:06
    1.如果只是四舍五入保留整数,可以用比较简单的方式//取整四舍五入 double num1=3.5415; long round = Math.round(num1); System.out.println(round);输出结果42.如果是小数四舍五入,需要保留N为小数,可以使用...
  • 1.BigDecimal实现四舍五入 *public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode) *返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。如果必须执行入,以生成...
  • 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了。在讲解之间我们先看如下一个经典的案例:
  • 问题重现: java中已经将实体类的类型设置为double 数据库中数据字段格式为number 在调用方法存入数据时,实体类...数据库原先设置的比例为0,所以存储的值自动四舍五入了,先把比例改为5,则可实现原有数据存储 ...
  • java基础之四舍五入和精度保留

    千次阅读 2018-01-24 19:24:50
    HAIL_EVEN、小数四舍五入整数和小数精度保留的方法  Math.ceil()、Math.floor()和Math.round(). ROUND_UP、 ROUND_DOWN、ROUND_CEILING、 ROUND_FLOOR、 HALF_UP、HALF_DOWN、
  • 内容: import java.math.BigDecimal; import java.text.DecimalFormat; public class TestGetInt{ public static void main(String[] args){ double i=2, j=2.1, k=2.5, m=2.9;... System.out.println("掉小...
  • import java.text.DecimalFormat; /** * Hello world! * ...public class App ... //格式化数据千分位四舍五入保留两位小数 DecimalFormat df =new DecimalFormat("###,###.##"); System.out..
  • //四舍五入,不保留小数; float gr = 8; float gc = 3; DecimalFormat df1 = new DecimalFormat("0");//格式化小数,不足的补0 String gaver = df1.format((gr/gc));//返回的是String类型的  //四舍...
  • float四舍五入保留两位小数注意的地方 最近在codewars做了一道非常简单的题目,但是它却花了我20来分钟,虽然最后解决了,但是中间发觉对于java的基础实在不行,回去要好好补一下 不说这么多,上题目:就是写一个...
  • 四舍五入到2或3个小数位是我们Java程序员日常开发中肯定会遇到。幸运的是,Java API提供了几种在Java入数字的方法 我们可以使用Math.round(),BigDecimal或DecimalFormat将Java中的任何浮点数四舍五入到n个...
  • Double使用intValue,会直接舍去小数点后经度,使用(int) Math.round()可以实现四舍五入的方式转int 看下面的例子以及输出结果,可能更加容易明白 String str1 = "100.4"; String str2 = "100.5"; Double d1 = ...
  • public static void main(String[] args) { System.out.println("向上取整:" + (int) Math.ceil(96.1));// 97 (去掉小数凑整:不管小数是多少,都进一) ... System.out.println("四舍五入取整:" + .
  • 项目要对一个double值保留小数点后3位,网上找到好几种方法,选一个用在项目中,实测发现有误差,再换一种,还是会有误差。最后经过多种情况测试,发现最后2种是精确的。 import java.math.BigDecimal; import java....
  • java double类型保留小数和四舍五入

    千次阅读 2017-02-15 21:12:49
    方法一:通过四舍五入方式保留特定后几位 import java.util.*; public class Main { public static void main(String args[]) { double t=1.123456; System.out.println((double)Math.round(t*100000)/...
  • Java中double类型四舍五入的方法总结

    千次阅读 2020-11-20 08:55:34
    代码: double a = 13.245; //方法一: BigDecimal bd= new BigDecimal(a); Double b = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();...System.out.println("方法一: "+b);...Double myValue = new ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,681
精华内容 5,872
关键字:

java四舍五入保留整数

java 订阅