在 Java 中,int
和float
类型都是4 字节。
那么int
如何表示-2,147,483,648
到2,147,483,647
的范围,其中float
大约有±3.40282347E+38F
,而两者具有相同的有限字节量?
根据我的理解,两者都应该具有相同的范围,因为它们具有相同的字节量。
“浮动”点意味着您的数字的小数部分的位数可以改变,以表示您的数字“尽可能最好”,因为它的大小决定了约束。
让我们暂时忘记float数据类型的 4 个字节,并假设您的“浮点”类型最多可以存储 10 位数字加上负符号。这意味着您可以准确地表示从:-9 999 999 999
到+9 999 999 999
的数字。但是,如果您想要一个小数,则可以准确地表示从-999 999 999.9
到3
现在,让我们通过讨论意义和指数来形式化一些解释:
有效数字包含您的有效数字
指数表示 10 乘数的指数,或者如果更容易,则表示移动小数点的位置(0 位于第一个有效数字之前)。
假设您的“浮点”数据类型在其有效数中最多可以有 4 位数字,在其指数中最多可以有 1 位数字,再加上减号有效数和指数。您将能够表示-0.9 999 * 10^9 = -999900000
到+0.999 9 * 10^9 = +999900000
的数字,因为您只能表示数字。
这解释了为什么范围如此之大,尽管大小只有 4 个字节,如你的问题所述。
要完成您对此事的了解,请将上述概念带入二进制(您的典型float
使用 4 位作为指数,23 位用于有效数和 1 位用于有效数的符号)。
是一个很好的起点。编程目的的主要收获通常是了解在给定数据类型(“精度”)的情况下可以存储多少个十进制数字,因为这将确定哪种特定的十进制格式最适合您的目的。
有关更多信息,请参见以下链接:https://en..org/wiki/Floating-point_arithmetic#IEEE_754:_floating_point_in_modern_computers
请注意,理解二进制系统上的浮点数的概念在信息技术中非常重要,因为即使是最简单的计算也会受到它的严重影响。
例如,在计算机(二进制)上表示的浮点是编写以下内容的原因:
public cl MyCl {
public static void main(String args[]) {
double x=0.1f;
double y=0.2f;
double z=0.3f;
if(x+y == z) {
System.out.println("something");
}
else {
System.out.println("something else");
}
}
}
将反直觉地输出something else
,但如果您开始使用数字或将类型更改为float,它将产生正确的输出。
所以请注意:你需要完全理解这个概念。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(59条)