如果我想编写从float转换为double的方法。
在任何情况下,两者都会给出不同的结果吗?
如果我不关心平台一致性,应该使用哪个版本?
如果我需要它在不同平台上保持一致状态怎么办?
double f2d(float x) {
return (double) x;
}
或:
strictfp double f2d(float x) {
return (double) x;
}
JLS 5.1.2:
从float扩展为double的原始转换(不是严格的fp)可能会丢失有关转换值整体大小的信息。
此转换为什么会丢失信息?
答案 0 :(得分:1)
strictfp
对于float
到double
的转换没有影响。原因是在Java语言规范中,
4.2.3. Floating-Point Types, Formats, and Values。特别是:
请注意,表4.2.3-A中的约束条件是为了使每个 浮点值集的元素也必定是 float-extended-exponent值集,double值集和 双重扩展指数值集。
由于float
值集的每个元素也都是double
值集的元素,因此无论float
到double
的转换都将是精确的-严格与否。
答案 1 :(得分:-1)
您可以使用包装器类。 浮点数x = 5/2; double y = Double.parseDouble(x);
有关更多详细信息,
https://www.google.lk/amp/s/www.geeksforgeeks.org/wrapper-classes-java/amp/