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播放器中,其实用户是可以任意的设置播放屏幕的大小的。但是前提是我们要放弃调用WMP播放,而是采用PPS新版中自带的播放器进行
小红书拥有阅读量超百亿的垂直兴趣领域,与超过500部合作热剧/综艺、多领域超级IP的深度合作,满足不同圈层的兴趣需求。作为优质原生
有一些网站上传照片的时候,对照片大小有要求。偶然之间发现了一个很好用的修改图片的网站,非常快速。 地址: https://www.gaitubao.c
i3 8100配什么显卡比较好 适合搭配i3-8100的最佳显卡
大家估计都想知道i3-8100配什么显卡好呢?我们知道酷睿i3-8100是去年就已经上市的一款处理器,至今依旧拥有非常高的热度和销量。伴随