日期:2014-05-20  浏览次数:20785 次

strictfp :到底是float*float中间结果会扩展为double还是中间结果会被截成float?
strictfp   :到底是float*float中间结果会扩展为double还是中间结果会被截成float?

------解决方案--------------------
应该是float

这个问题比较有趣

我做了个测试
look

float a = 1.11111f;
float b = 0.11111f;
double a1 = 1.11111;
double b1 = 0.11111;
double d0 = a * b;
double d1 = a1 * b1;
float f0=a*b;
float f1=(float)(a1*b1);
System.out.println( "d0= " + d0);
System.out.println( "d1= " + d1);
System.out.println( "f0= " + f0);
System.out.println( "f1= " + f1);
System.out.println( "f2= " + (double)f1);

//相当于把float*float得到的float强行转化为double的结果
d0=0.12345542758703232
//高精度double
d1=0.1234554321
//float
f0=0.12345543
//相当于把double转化为float
f1=0.123455435
//将float转化为double
f2=0.12345543503761292



------解决方案--------------------
确实很有趣,不过真的不明白为什么是这样的
------解决方案--------------------
路过,学习