编写一个程序,该程序从用户读取一个双精度值并将其存储在一个双精度变量中。然后它将执行显式转换,将其分配给一个float变量。然后,您将计算这两个变量之间的差的绝对值。循环执行此操作,尽管此差异低于在循环之前初始化为1.0的阈值。在每次迭代结束时,通过将阈值除以10.0来减小阈值。”
我得到了这个例子来为我的java类工作,我可以读取和存储double变量,但是我对“将其分配给float变量的显式转换”迷失了。我还没有了解什么是显式强制转换,因为我的教科书甚至甚至都没有定义显式强制转换,这比我想要定义的是什么以及如何以问题所希望的方式精确编码要多。
问题来源:stackoverflow
您好,欢迎使用Java编码。
类型转换意味着将变量分配给新类型,即使它是预定义的。
加倍
double number = 4.5; 现在您要将该数字存储为整数。
int FalsyNumber = number; 这将产生一个错误,因为您的整数不能存储小数点后的值。默认情况下,编译器将停止执行并调用sth。就像“如果这样做会丢失信息,是故意的吗?”
因此,您需要说“是的,我不在乎那些丢失的数据,需要我可以释放的额外内存空间。”
因此,您必须显式地将该变量类型转换为Integer。
int FalsyNumber = (int)number; 方括号中包含该类型,并使用与该类型相同的数字(至少在此行中使用)。因此,您的编译器不会在此处显示错误,但是输出将为4,因为丢失的数据显然无法由整数存储。
很多话,这么简单的话。您键入了double值,并将其存储到float类型的(另一个)变量中。
double input = 3.983243242423; // that is your input stored float numberToCalulateWith = (float)input; // here it truncates eventually 可以说,在某些情况下差异不会那么明显。因为您将“ 4”存储为双精度数,然后将其强制转换为浮点数,所以您仍然会有4。但是,如果它不是那么容易的数字,则您将丢失数据,并且本练习的目的是从何时开始丢失数据开始它。
答案来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。