合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
### [指数计数法](https://lingcoder.gitee.io/onjava8/#/book/04-Operators?id=%e6%8c%87%e6%95%b0%e8%ae%a1%e6%95%b0%e6%b3%95) 指数总是采用一种我认为很不直观的记号方法: ~~~ // operators/Exponents.java // "e" 表示 10 的几次幂 public class Exponents { public static void main(String[] args) { // 大写 E 和小写 e 的效果相同: float expFloat = 1.39e-43f; expFloat = 1.39E-43f; System.out.println(expFloat); double expDouble = 47e47d; // 'd' 是可选的 double expDouble2 = 47e47; // 自动转换为 double System.out.println(expDouble); } } ~~~ 输出结果: ~~~ 1.39E-43 4.7E48 ~~~ 在科学与工程学领域,**e**代表自然对数的基数,约等于 2.718 (Java 里用一种更精确的**double**值**Math.E**来表示自然对数)。指数表达式 "1.39 x e-43",意味着 “1.39 × 2.718 的 -43 次方”。然而,自 FORTRAN 语言发明后,人们自然而然地觉得e 代表 “10 的几次幂”。这种做法显得颇为古怪,因为 FORTRAN 最初是为科学与工程领域设计的。 理所当然,它的设计者应对这样的混淆概念持谨慎态度 \[^2\]。但不管怎样,这种特别的表达方法在 C,C++ 以及现在的 Java 中顽固地保留下来了。所以倘若习惯 e 作为自然对数的基数使用,那么在 Java 中看到类似“1.39e-43f”这样的表达式时,请转换你的思维,从程序设计的角度思考它;它真正的含义是 “1.39 × 10 的 -43 次方”。 注意如果编译器能够正确地识别类型,就不必使用后缀字符。对于下述语句: ~~~ long n3 = 200; ~~~ 它并不存在含糊不清的地方,所以 200 后面的 L 大可省去。然而,对于下述语句: ~~~ float f4 = 1e-43f; //10 的幂数 ~~~ 编译器通常会将指数作为**double**类型来处理,所以假若没有这个后缀字符`f`,编译器就会报错,提示我们应该将**double**型转换成**float**型。