我想使用此代码将字节转换为正确的值
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。有没有办法重构代码,将非常大的值转换成合适的格式?
发布于 2015-04-18 02:54:03
我想你在这里指的是"L“?
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
我期望你的代码如何与库一起工作的一个例子:
public static void main(String[] args) throws Exception {
LibraryObject lib = new LibraryObject();
long someSize = lib.doSomething();
String readableFileSize = readableFileSize(someSize);
}但是如果没有更多关于你使用的这个“库”做什么的细节,你想用它做什么,等等,我不能肯定。
https://stackoverflow.com/questions/29707139
复制相似问题