为什么将二进制分配给float或double会导致错误。
这是我的第一个效果很好的代码 -
float myFloat1 = 0b111; //prints 7.0
double myDouble1 = 0b111; //prints 7.0
这是第二个代码
float myFloat2 = 0b111f; //compiler complains ';' expected
double myDouble2 = 0b111d; //compiler complains ';' expected
在第二个代码编译器中抱怨';'预计,在第二个代码片段中发生了什么?任何帮助将不胜感激。
答案 0 :(得分:2)
0bxxx
指定一个整数,但不能使用d
或f
对其进行修改,以将其转换为浮点值。但你可以使用演员:
float myFloat2 = (float) 0b111;
double myDouble2 = (double) 0b111;
答案 1 :(得分:0)
您好,如果您只使用float x=7;
然后它假设7是整数并尝试分配给float,因此编译时错误来了
所以要让它工作我们必须做
float x=7f;
但如果该数字在java中以0开头,则将其视为八进制数
对于八进制数,你不应该附加f或d之类的东西。
所以float x=0b111;
很好,而不是float x =0111f;
还要记住float x=0181;
是无效的,因为八进制数应该只有0到7的数字,而且它的数字是8。