Java - 为什么 float 需要强制转换或 'f' 后缀,而 long 不需要?

标签 java

为什么我需要转换 float 或添加“f”后缀,而 long 则不需要?

为什么 float 的默认数据类型是 double 而不是 float?

例如:

float foo = 0.5; //compilation error
float foo = 0.5f; //works
float foo = (float)0.5; //works

long bar = 10; //works

为什么Java要这样设计?

最佳答案

第一个不起作用,因为 double (0.5 是 double 文字)比 float 更宽:它具有更多的数据位,因此赋值需要丢弃一些数据。您可以显式地转换它,但必须明确表示您打算通过 (float) 转换丢失额外的数据。

最后一个之所以有效,是因为 10 是一个 int 文字,而 int 比 long 更窄:它的数据位数更少,因此您可以将 int 分配给 a长时间不丢失数据。

关于Java - 为什么 float 需要强制转换或 'f' 后缀,而 long 不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169241/

相关文章:

java - 我被教导说并发条件不一定需要写在循环中,这与 oracle 文档所说的相反

java - 使用 AsyncTask 时无法从 HttpURLConnection.getResponseCode 接收值?

java - 如何用 Java 构建自解压 JAR

java - 使用 Java 代理将类添加到类路径

java - 如何将扫描仪输入放入数组中......例如几个数字

java - 计算 GCD

java - "ch - ' a'“是什么意思?

java - mockito "verify"检查当前状态,但不重置模拟调用

java - 检查重复的用户输入数组值时出错

java - 用逗号分割字符串,然后将其放入树形图中