首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重构代码以获得更大的价值

重构代码以获得更大的价值
EN

Stack Overflow用户
提问于 2015-04-18 02:45:40
回答 1查看 64关注 0票数 0

我想使用此代码将字节转换为正确的值

代码语言:javascript
运行
复制
import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.DecimalFormat;

public class Ideone
{

    public static void main (String[] args) throws java.lang.Exception
    {
        String readableFileSize = readableFileSize(9394343298L);
        System.out.println("Result " + readableFileSize);
    }



    public static String readableFileSize(long size)
    {
            if (size <= 0)
                return "0";
            final String[] units = new String[]
            {
                "B", "kB", "MB", "GB", "TB"
            };
            int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
            return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
    }
}

矿脉可以工作,但我必须将L放在数字后面。在我的例子中,我使用的是封闭源代码库,当我使用它时,我不能添加L。有没有办法重构代码,将非常大的值转换成合适的格式?

EN

回答 1

Stack Overflow用户

发布于 2015-04-18 02:54:03

我想你在这里指的是"L“?

代码语言:javascript
运行
复制
    String readableFileSize = readableFileSize(9394343298L);

在Java语言中,这就是构造long类型而不是int类型的常量的方法。

来自Primitive Data Types - Integer Literals

整数文字如果以字母L或l结尾,则为

类型;否则为int类型。建议您使用大写字母L,因为小写字母l很难与数字1区分开来。

如果您正在使用一个库,那么它很可能已经为您提供了一个long,或者可以转换为一个的东西。例如,您可以将int“向上转换”为long,但不能安全地将其转换为other。

另请参阅:Initialize a long in Java

我期望你的代码如何与库一起工作的一个例子:

代码语言:javascript
运行
复制
public static void main(String[] args) throws Exception {
    LibraryObject lib = new LibraryObject();
    long someSize = lib.doSomething();
    String readableFileSize = readableFileSize(someSize);
}

但是如果没有更多关于你使用的这个“库”做什么的细节,你想用它做什么,等等,我不能肯定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29707139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档