java 中的e符号

march_on 2013-04-26 09:22:26
看java代码,有一个数是1.e-12,测试了一下,发现就是Math.pow(10,-12),也就是10的-12次方,在《java编程思想》第49页提到java中的e表示10,比如1.39e-43表示1.39*10^-43,我的问题是1.e-12中这个点是干什么用的,纯粹是为了表示这是个double类型还是?我好像也看到1.这种表示方法,是不是一个整数后面加个点就表示这个数是一个double类型或float类型

还有1e-12这是表示什么?

我用以下语句测试:

System.out.println(1.e-12 == Math.pow(10, -12));
System.out.println(1e-12==Math.pow(10,-12));
System.out.println(1e-5==Math.pow(10,-5));

结果输出

true
true
false

为什么最后一个为false,不解

第2个问题是Math类中有个常量E,这个大写的E和上面提到的e有关系没,这个大写的E好像是自然对数的基数,应该没关系吧

求证我的看法是否正确
...全文
4676 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wm_wm123 2015-07-01
  • 打赏
  • 举报
回复
如果两个参数都为整数,并且结果恰好可以表示为一个 double 值,那么该结果恰好等于第一个参数的第二个参数次幂的算术结果
huntor 2013-04-27
  • 打赏
  • 举报
回复
1.0 = 1. != 1.0f
fei1710 2013-04-27
  • 打赏
  • 举报
回复
不好意思,我说错了。1e-5默认应该是double类型。 Math.pow(10,-5)是运行时算出来的,由于中间结果也要以浮点数表示,会损失一些精度。 1e-5是编译时确定的,没有经过总结运算,估计会更精确些。 浮点型内部是以二进制的科学计数法表示的。 二进制不可能把0.00001准确表示出来。 浮点数用来做比较还是要小心的。
ace62 2013-04-27
  • 打赏
  • 举报
回复
第2个问题,Math类中的常量E是自然数e,近似值是2.71818..... 与常量1e-3中的e不是一回事,这里表示为 1*10^(-3)
shine333 2013-04-27
  • 打赏
  • 举报
回复
march_on 2013-04-27
  • 打赏
  • 举报
回复
引用 2 楼 bjbao123 的回复:
看了问题后我做了如下尝试:
System.out.println(1.e-12);
System.out.println(1e-12);
System.out.println(1e-5);
System.out.println(Math.pow(10,-5));
System.out.println((float)Math.pow(10,-5));
O/P为:
1.0E-12
1.0E-12
1.0E-5
9.999999999999999E-6
1.0E-5
java中,包含浮点数的运算,其结果都是近似值,因为浮点数在java中的存储不是完全精确的,举个例子,
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);
System.out.println(1.0 - 0.9);
O/P
0.5000000000000001
0.09999999999999998
我也试了一下,结果跟你的一样,但是为什么Math.pow(10,-12)就是1.0E-12呢,而Math.pow(10,-5)就是9.999999999999999E-6?
bjbao123 2013-04-26
  • 打赏
  • 举报
回复
看了问题后我做了如下尝试:
System.out.println(1.e-12);
System.out.println(1e-12);
System.out.println(1e-5);
System.out.println(Math.pow(10,-5));
System.out.println((float)Math.pow(10,-5));
O/P为:
1.0E-12
1.0E-12
1.0E-5
9.999999999999999E-6
1.0E-5
java中,包含浮点数的运算,其结果都是近似值,因为浮点数在java中的存储不是完全精确的,举个例子,
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);
System.out.println(1.0 - 0.9);
O/P
0.5000000000000001
0.09999999999999998
fei1710 2013-04-26
  • 打赏
  • 举报
回复 1
1e-12表示10的-12次方。 1e-5==Math.pow(10,-5)); 不相等的原因是1e-5是float,而右边是double。double的精度要高,所以不相等。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧