长浮点数输出显示字母
我有以下代码:
String curDir = "."; File fileObject = new File(curDir); File[] fileList = fileObject.listFiles(); float fileLengthMegabytes = (float)fileList[i].length() / 1000000;
方法fileList [i] .length()返回311字节作为Long类型。
前面的代码产生以下输出:
3.88E-4
如何在fileLengthMegabytes变量中获得预期的输出0,000311?
这是科学记数法。
你得到388而不是311,因为你除以1000000而不是1048576(1024 * 1024)
编辑:311即使用1048576也没有实现,这样你得到370 ……所以错误可能在你的计算中;)
如此处所述 ,您只需通过Formatter将您的科学记数法转换为十进制表示法。
DecimalFormat df = new DecimalFormat("#.########"); return df.format(fileLengthMegabytes);
运行示例 : http : //ideone.com/2lkKv7
import java.util.*; import java.lang.*; import java.text.*; class Main { public static void main (String[] args) throws java.lang.Exception { DecimalFormat df = new DecimalFormat("#.##########"); float fileLengthMegabytes1 = (float) 388 / 1000000; float fileLengthMegabytes2 = (float) 388 / 1048576; System.out.println("MB1 in Scientific Notation: " + fileLengthMegabytes1); System.out.println("MB1 in Decimal Notation: " + df.format(fileLengthMegabytes1)); System.out.println("MB2 in Scientific Notation: " + fileLengthMegabytes2); System.out.println("MB2 in Decimal Notation: " + df.format(fileLengthMegabytes2)); } }
输出:
科学记数法MB1:3.88E-4
MB1的十进制表示法:0.000388
科学记数法中的MB2:3.7002563E-4
MB2的十进制表示法:0.0003700256
这是Java(和许多其他语言)显示浮点数的方式。 E
仅表示10^
,因此3.88E-4
是另一种写入3.88 x 10^-4
,与0.000388
相同。
这种格式称为科学记数法 。 电子符号是科学记数法的计算机表示。
其余的不准确度(388 vs 311)是因为1000000不是你想要除的确切数字。 有关详细信息,请参阅其他答案。
前面提到的3.88E-4是科学E-notation中的一种表示 。
如果你想打印它或转换为String你可以写这样的东西:
System.out.printf("%f%n", fileLengthMegabytes); // or String fileLengthMegabytesMessage = String.format( "File size is %fMb", fileLengthMegabytes); System.out.println(fileLengthMegabytesMessage);
你有:
0,000311 // or File size is 0,000311Mb
尊敬
如果您想要正常数字(没有科学记数法),请使用BigInteger
BigInteger inbytes = new BigInteger("" + fileList[i].length()); BigInteger inMB = inBytes.divide(new BigInteger("" + (1024*1024)));
注意:正常的double
值也足够了。
要获得所需的符号,请使用格式化程序:
final Formatter f = new Formatter(); final String out = f.format("%8.6f", fileLengthMegabytes);
应该给你你的结果。
另请参阅: Java Doc:String.Format , Java Doc:Formatter