必威体育Betway必威体育官网
当前位置:首页 > IT技术

BigDecimal比较数据大小

时间:2019-09-27 15:43:10来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

bigdecimal比较大小

上周遇到个需求是上传文件的大小不能超过5M,因为想尝试着获取准确值,所以使用了bigdecimal类来计算,而通常使用的float和double在计算时是会丢失精度的。

BigDecimal常用来获取精确的计算结果,float和double类型主要是为了科学计算和工程计算而设计的,并不会提供完全精确的结果。

        long fileSize1 = 3450;      //小于5M
        long fileSize2 = 6349000;   //大于5M
        long fileSize3 = 5242880;   //等于5M
        BigDecimal size1 = new BigDecimal(fileSize1 / 1024.0 / 1024.0);  // size1 = 0.0032901763916015625
        BigDecimal size2 = new BigDecimal(fileSize2 / 1024.0 / 1024.0);  // size2 = 6.05487823486328125
        BigDecimal size3 = new BigDecimal(fileSize3 / 1024.0 / 1024.0);  // size3 = 5
        int compareResult1 = size1.compareTo(new BigDecimal(5));
        int compareResult2 = size2.compareTo(new BigDecimal(5));
        int compareResult3 = size3.compareTo(new BigDecimal(5));
        System.out.println("compareResult1 = " + compareResult1);    //小于5,结果为-1
        System.out.println("compareResult2 = " + compareResult2);    //大于5,结果为1
        System.out.println("compareResult3 = " + compareResult3);    //等于5,结果为0

        float floatResult1 = (float) (fileSize1 / 1024.0 / 1024.0);  //0.0032901764
        float floatResult2 = (float) (fileSize2 / 1024.0 / 1024.0);  //6.054878
        float floatResult3 = (float) (fileSize3 / 1024.0 / 1024.0);  //5.0

使用BigDecimal的compareTo方法来将结果进行对比。

根据代码可以看出float和BigDecimal值的区别。

相关阅读

四大小红书推广策略,助力品牌成功营销

小红书的发展势头之迅猛,导致大量品牌涌入做小红书推广,社区每天产生数十亿次的笔记曝光,其中不乏含大量小红书推广的曝光,小红书

PPS播放器任意设置播放屏幕画面大小比例的诀窍

在PPS播放器中,其实用户是可以任意的设置播放屏幕的大小的。但是前提是我们要放弃调用WMP播放,而是采用PPS新版中自带的播放器进行

突破这四大小红书推广策略 你的品牌轻松成爆款

小红书拥有阅读量超百亿的垂直兴趣领域,与超过500部合作热剧/综艺、多领域超级IP的深度合作,满足不同圈层的兴趣需求。作为优质原生

改图宝,快速修改图片大小

有一些网站上传照片的时候,对照片大小有要求。偶然之间发现了一个很好用的修改图片的网站,非常快速。 地址: https://www.gaitubao.c

i3 8100配什么显卡比较好 适合搭配i3-8100的最佳显卡

大家估计都想知道i3-8100配什么显卡好呢?我们知道酷睿i3-8100是去年就已经上市的一款处理器,至今依旧拥有非常高的热度和销量。伴随

分享到:

猜你喜欢

    Warning: mysql_query(): Unable to save result set in E:wwwwww.seotesttools.comeclassdb_sql.php on line 20 SQL Error: select id,classid,ttid,onclick,plnum,totaldown,newspath,filename,userid,username,firsttitle,isgood,ispic,istop,isqf,ismember,isurl,truetime,lastdotime,havehtml,groupid,userfen,titlefont,titleurl,stb,fstb,restb,keyboard,title,ftitle,newstime,titlepic,smalltext,diggtop from ***_ecms_news order by rand() limit 6

栏目导航

推荐阅读

热门阅读

    Warning: mysql_query(): Unable to save result set in E:wwwwww.seotesttools.comeclassdb_sql.php on line 20 SQL Error: select id,classid,ttid,onclick,plnum,totaldown,newspath,filename,userid,username,firsttitle,isgood,ispic,istop,isqf,ismember,isurl,truetime,lastdotime,havehtml,groupid,userfen,titlefont,titleurl,stb,fstb,restb,keyboard,title,ftitle,newstime,titlepic,smalltext,diggtop from ***_ecms_news where isgood>0 order by rand() limit 30