重构代码为大价值

时间:2015-04-17 18:45:40

标签: java long-integer

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

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];
    }
}

lode工作但我必须在数字后面放置L。在我的情况下,我使用闭源库,当我使用它时,我无法添加L.有没有办法重构代码将非常大的值转换为正确的格式?

1 个答案:

答案 0 :(得分:1)

我认为你指的是&#34; L&#34;这里吗?

    String readableFileSize = readableFileSize(9394343298L);

这就是如何在Java中构造一个long类型而不是int类型的常量。

来自Primitive Data Types - Integer Literals

  

如果整数文字以字母L或l结尾,则其长度为long;   否则它是int类型。建议您使用鞋面   大小写字母L因为小写字母l很难区分   从数字1。

如果您正在使用某个库,那么它似乎已经为您提供了long,或者可以将其转换为一个库。例如,你可以&#34; upcast&#34;一个intlong,但你无法安全地走另一条路。

另请参阅:Initialize a long in Java


我希望您的代码如何使用库的示例:

public static void main(String[] args) throws Exception {
    LibraryObject lib = new LibraryObject();
    long someSize = lib.doSomething();
    String readableFileSize = readableFileSize(someSize);
}

但没有关于这个&#34;库&#34;你正在使用它,你想用它做什么等等,我无法肯定地说。