二进制浮点数或双重赋值错误

时间:2014-04-27 14:36:48

标签: java variable-assignment binary-data

为什么将二进制分配给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

在第二个代码编译器中抱怨';'预计,在第二个代码片段中发生了什么?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

0bxxx指定一个整数,但不能使用df对其进行修改,以将其转换为浮点值。但你可以使用演员:

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。