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好像是自然对数的基数,应该没关系吧

求证我的看法是否正确
...全文
5996 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的精度要高,所以不相等。
内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,利用Matlab代码实现优化算法的仿真与复现。研究重点在于通过改进的秃鹰搜索算法(Bald Eagle Search Algorithm, BESA)解决微电网群在运行过程的经济调度问题,提升算法的收敛速度与全局寻优能力,以实现对分布式能源、储能系统及负荷的高效协调管理。文详细阐述了微电网群的系统架构、数学建模过程、目标函数设计(如运行成本最小化、碳排放降低等),并结合智能优化算法进行求解,验证了改进算法相较于传统方法在调度精度和效率方面的优越性。同时,研究还探讨了算法在多场景下的适应性,为微电网群的智能化、低碳化运行提供了技术支持与实践参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能优化算法相关工作的工程技术人员。; 使用场景及目标:① 学习并掌握改进秃鹰算法在复杂优化问题的应用方法;② 实现微电网群经济调度模型的构建与求解;③ 对比不同智能算法在电力系统优化的性能表现;④ 为科研论文复现、课题研究或工程项目提供算法支持与代码参考。; 阅读建议:建议读者结合文提供的Matlab代码逐模块分析,重点关注算法改进策略与调度模型的耦合实现方式,同时可尝试在不同参数设置或场景条件下进行仿真实验,以加深对算法性能与调度效果的理解。

62,622

社区成员

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

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