首页 > 编程语言 >Java数据单位转换

Java数据单位转换

时间:2023-10-04 22:22:07浏览次数:40  
标签:转换 BigDecimal 单位 units static bigDecimal Java String

Java数据单位转换

Java 将byte数据量转换为带适合单位的值,Java9以上适用

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.regex.Pattern;

/**
 * Convert byte values to values with appropriate data units
 */
public class Conversion {
    private static final BigDecimal span = new BigDecimal(1024);
    
    public static final String maxLevelBytes = "1329227995784915872903807060280344576";
    
    private static final String[] units = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB", "DB", "NB", "DB", "CB"};

    private static final Pattern NUMBER_PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");

    /**
     *
     * @param bytes Byte data volume of data
     * @return Value with appropriate data units
     */

    public static String UnitConversion(String bytes) {
        if (isNumeric2(bytes)){
            return "0B";
        }
        BigDecimal bigDecimal = new BigDecimal(bytes);
        if (bigDecimal.compareTo(BigDecimal.ZERO) <= 0) {
            return "0B";
        }
        BigDecimal level = new BigDecimal(maxLevelBytes);
        int i;
        for (i = units.length - 1; i >= 0; i--) {
            if (bigDecimal.compareTo(level) > 0) {
                break;
            }
            level = level.divide(span, 0, RoundingMode.DOWN);
        }
        return bigDecimal.divide(level, 2, RoundingMode.DOWN).toString() + units[i];
    }

    public static boolean isNumeric2(String str) {
        return str != null && NUMBER_PATTERN.matcher(str).matches();
    }
}

最后编辑时间:2023年10月4日22:13:23

标签:转换,BigDecimal,单位,units,static,bigDecimal,Java,String
From: https://www.cnblogs.com/tothk/p/17742846.html

相关文章

  • Java 集合框架
    一、集合框架图简化图:说明:对于以上的框架图有如下几点说明1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2.集合接口:6个接口(短虚线表示),表示不同集合类......
  • Java String类
    阅读目录(Content)一、String简介1.1、String(字符串常量)概述1.2、分析String源码二、创建字符串对象两种方式的区别2.1、直接赋值方式创建对象2.2、通过构造方法创建字符串对象2.3、两种实例化方式的比较三、String常用的方法3.1、String的判断功能3.2、String类......
  • 一个java程序员,手撸app的日记(一)
    首先,我是一名多年的java后端程序员,但刚接触此行的时候,还是写过jsp页面的,因为当年不懂,以为sp页面也是java的一部分,就闷着头给公司写了起来(只想说,html好写,但css是真的难)。jsp的编写是在自己经验不足的年纪,写了不到半年,草草了事,只是学会了ajax和部分js的编写(只觉得js真简单,弱类型,且......
  • Java17
    1.同时配置Java8和17环境用户变量2.新特性publicstaticvoidmain(String[]args){//1.文本框Stringtext="""{"name":"小黑说Java","age":18,......
  • "Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/n
    docker-compose搭建elasticsearch出现问题例子如下version:'3'services:elasticsearch:image:elasticsearch:7.14.0container_name:elasticsearchenvironment:-"discovery.type=single-node"-"xpack.sec......
  • Java 学习笔记一
    dos环境下(Windows即cmd)的Java命令先用javac文件名.java;命令,编译java文件,生成一个后缀为class、名与类名相同的文件。再用java类名命令,执行文件。注释当类名前的修饰符为public时,类名必须和源文件名一致。并且以上操作不能执行带package的java文件。和C......
  • 头歌(educoder)第 6 章 Java面向对象之常用类
    头歌(educoder)第6章Java面向对象之常用类目录Java面向对象-常用类(初级)第1关String类第2关:StringBuffer类第3关:Math类第4关Random类第5关:知识回顾Java面向对象-String类第1关length()方法与compareTo()方法的使用-花名册第2关substring()......
  • ARM 架构的 JVM(Java 虚拟机)最高的免费版本是 OpenJDK 17
    目前(截至2023年9月),ARM架构的JVM(Java虚拟机)最高的免费版本是OpenJDK17。OpenJDK17是JavaSE17的开源实现,由Oracle和其他开源贡献者共同维护。你可以在ARM架构的设备上安装和使用OpenJDK17,它包含了JavaSE17的所有功能和改进。要在ARM架构的设备上安装Op......
  • Java 18发布:甲骨文公司已开始将Java纳入其软件许可审计
    Java18发布:甲骨文公司已开始将Java纳入其软件许可审计 转载wx5b8b6568896132023-06-1601:22:35文章标签数据库编程语言java大数据人工智能文章分类Html/CSS前端开发阅读数171 2022年3月22日,甲骨文公司宣布推出世界头号编程语言和开发平台的最新版本-Java18。......
  • java多线程中的 锁(暂时记录)
    P150-lock----锁----那一节publicclassThreadExtendextendsThread{  staticintticket=0;  staticLocklock=newReentrantLock();  publicvoidrun(){    while(true){      lock.lock();      if(ticket......