3 回答
TA贡献1807条经验 获得超9个赞
如果浮点字面量以字母For结尾,则它属于 float 类型f。否则它的类型是double,它可以选择以字母Dor结尾d。
浮点类型 ( floatand double) 也可以使用 E 或 e(用于科学记数法)F或f(32 位浮点字面量)和D或d(64 位双字面量;这是默认值,按惯例省略)表示。
double d1 = 123.4;
// same value as d1, but in scientific notation
double d2 = 1.234e2;
float f1 = 123.4f;
TA贡献1780条经验 获得超5个赞
默认情况下,Java 编译器将 2.1 视为双精度型(64 位)而不是浮点型(32 位)。声明 float f=2.1 会导致精度损失。因此,Java 强制您进行转换以确保您声明的是浮点变量。
无需强制转换,您可以使用浮点数末尾的字母“f”来实现相同的效果。例如,float f=2.1f
。
现在您可能会问,为什么从 long 转换为 float 时不需要强制转换,因为前者在内部使用的位比后者多。答案是 Java 不需要在不断扩大的路径上进行转换 - byte => short => int => long => float => double。(从左到右(扩大转换) - 不需要强制转换;从右到左(缩小转换) - 需要显式转换)
TA贡献1772条经验 获得超8个赞
双打更精确,额外的存储成本几乎总是可以忽略不计。所以在 Java 中默认 2.1 是 double 类型。现在要将 double 转换为 float 您需要进行转换,而无需将 double 数据分配给 double 类型转换。
添加回答
举报