Java 铸造浮子阵列
我写Java已经有一段时间了,甚至开始教别人。我发现很难向一个新学生解释为什么必须铸造浮点数组的值。例如:Java 铸造浮子阵列,java,arrays,floating-point,Java,Arrays,Floating Point,我写Java已经有一段时间了,甚至开始教别人。我发现很难向一个新学生解释为什么必须铸造浮点数组的值。例如: float[] someArray = {(float) 23.23, (float) 123.1, (float) 123.1}; int[] intArray = {12, 13, 4, 5}; double[] doubleArray = {22.12, 23.1, 12.1}; 我猜包含小数的值只被视为双精度而不是浮点数,因此需要强制转换。Java选择这种方式的原因是什么?编
float[] someArray = {(float) 23.23, (float) 123.1, (float) 123.1};
int[] intArray = {12, 13, 4, 5};
double[] doubleArray = {22.12, 23.1, 12.1};
我猜包含小数的值只被视为双精度而不是浮点数,因此需要强制转换。Java选择这种方式的原因是什么?编译器不能也认为因为它是一个浮点数组,所以它将接受浮点值吗 在Java中,带小数点的数字被隐式处理为
double
。例如,您可以简单地编写23.23F
,而不是强制转换为浮点。最后的F
告诉编译器将该值视为float
literal。float F=23.23f“原始”十进制值默认为double
,因此,如果要使用浮点值,则必须指定浮点值。要么像你一样通过演员阵容,要么像吓人的袋熊建议的那样通过浮标文字。编译器可以假定您的意思是浮点
,但这可能不是您想要的,因此会出现警告/错误。与从较宽的整数类型转换为较窄的整数类型不同,从双精度
到浮点
的转换可以更改值,因为双精度
值必须四舍五入以适应浮点
精度。因此,我假设Java设计人员不允许隐式的double
到float
转换,以避免在没有程序员明确请求的情况下更改值。赋值所允许的转换的具体规则是,但我对Java规范还不够熟悉,无法很容易地解释它,并且……说这些规则是否是管理您所询问的特定代码的特定规则。