Java采取了一种很不直观的记数法来表示指数。
在科学工作领域中,e代表自然对数的基数。约等于2.718(Java中的Math.E给出了double型的精确值)。
例如:1.39*e^(-43)这样的指数表达式意味着1.39*2.718^(-43)。但是,在C、C++、Java中,e代表10的幂次。所以在Java中看到1.39e-43f这样的表达式时,它的值应该是1.39*10^(-43)。
如果编译器能正确识别类型,则不用在数值后加字符。如果存在含糊不清的地方,编译器通常会将指数做双精度(double)处理,示例如下:
public class Example { public static void main(String[] args) { float f=1.39e-43f; System.out.println("f is "+f); double d1=47e47d; double d2=47e47; System.out.println("d1 is "+d1); System.out.println("d2 is "+d2); } }
输出结果如下:
f is 1.39E-43
d1 is 4.7E48
d2 is 4.7E48