java – 为什么浮点基元类型在划分并乘以10的某个倍数时会以科学计数法显示?
作者:互联网
在下面的示例中,可以看到Java在某些类型的操作中使用具有浮点的基本类型显示结果时具有特殊性,例如除以10的倍数:
int num1 = 5;
float num2 = num1 / 10000f;
System.out.println (num2);
可以是seen here,结果是5.0E-4而不是0.0005.
我知道这是一个科学的符号,这意味着5.0 * 10 ^ -4,这导致相同的值,但我不明白为什么Java在显示器中进行此更改.
有一个snippet的文档说:
(…) If m is less than 10-3 or greater than or equal to 107, then it is represented in so-called “computerized scientific notation.”
在引文中提到的案例中,是否有任何语言或官方动机要采用这种展示?或者只是为了可读性?
Note: this feature does not occur with
int
andlong
types, such as 07002
解决方法:
我没有这方面的文档参考,但一般来说,很难读取非常大或非常小的数字.原因在于,当您测试自己时,当数字变大时,很难计算零的数量.实际上,科学记数法的一个要点是避免写出无关紧要的零.
以5.0E-4为例,我们可以将其写为0.0005.但是5之前的零是微不足道的,只是通过告诉我们它相当小而对测量做出贡献.通过将此值写为5.0E-4,我们将零值归为E-4项,从而使我们能够专注于重要的5.0值.
至于Java选择其特定约定的原因,您可能不得不问Java的创建者.
标签:java,floating-point,language-design 来源: https://codeday.me/bug/20190607/1194806.html