This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28335运算64位浮点遇到的一个奇怪问题



ccs为5.4.0,芯片为28335

代码我定义如下:

long double test,test1,test2;

test = ((long double)0.000001388888888889)*259199999;

test1 = 0.000001388888888889L;

test2 = test1*259199999;

test和test2的输出结果不一样,test大于360,test2小于360。并且用计算器计算,test2的结果才是正确的。

但是同样的,如果换其他的数据计算

long double test,test1,test2;

test = ((long double)0.0000006705522537231)*536870911;

test1 = 0.0000006705522537231L;

test2 = test1*536870911;

test和test2的结果是一样,并且和计算器计算的结果一样。

 

我想知道这是28335的fpu的问题(我打开了fpu)还是软件编译器的问题。