我想使用此代码将字节转换为正确的值
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.有没有办法重构代码将非常大的值转换为正确的格式?
答案 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;一个int
到long
,但你无法安全地走另一条路。
另请参阅: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;你正在使用它,你想用它做什么等等,我无法肯定地说。