开发者社区> 问答> 正文

显式强制循环

编写一个程序,该程序从用户读取一个双精度值并将其存储在一个双精度变量中。然后它将执行显式转换,将其分配给一个float变量。然后,您将计算这两个变量之间的差的绝对值。循环执行此操作,尽管此差异低于在循环之前初始化为1.0的阈值。在每次迭代结束时,通过将阈值除以10.0来减小阈值。”

我得到了这个例子来为我的java类工作,我可以读取和存储double变量,但是我对“将其分配给float变量的显式转换”迷失了。我还没有了解什么是显式强制转换,因为我的教科书甚至甚至都没有定义显式强制转换,这比我想要定义的是什么以及如何以问题所希望的方式精确编码要多。


问题来源:stackoverflow

展开
收起
七天一失眠 2020-03-28 11:17:59 757 0
1 条回答
写回答
取消 提交回答
  • 做一个优秀的阿里云志愿者

    您好,欢迎使用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

    2020-03-28 11:18:16
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载