书中的答案对我没有任何意义,所以这就是问题所在:
变量a
是一个浮点数,变量b
是一个双精度数。编写一个语句,将b
的值赋给a
,而不会在编译程序时导致错误。
这是我在书中找到的答案:
fvar = (float)dvar;
Whaaaat!????
这是我认为可行的方法:
public class HelloWorld
{
public static void main(String[] args)
{
float a = 7.5;
double b = 12.25;
a = (double)b;
}
}
Haven没有弄明白所以任何帮助都非常感激。
答案 0 :(得分:6)
本书的作者所写的是正确的
fvar = (float)dvar;
如果我们查看您的代码行,
a = (double)b;
你再投两次加倍。你需要做的是施放到浮动,这是书中写的。作者是对的。
答案 1 :(得分:0)
答案完全有意义,因为a是浮点值,它不像b那样精确,是双倍的。 look here
告诉编译器变量的类型,它只知道这些类型不匹配。由于它们都是浮点数,你可以将b(双精度)转换为(浮点数),这会导致精度损失,因为double可以保存比浮点数更精确的数字。
如果将b转换为浮点数,则告诉编译器将数字切换为浮点数。