stm32F407,MDK uVision 4.54, 浮点数计算的精度问题:
float x,y;
int a;
x = 一个浮点算式(多元函数)的计算结果,计算结果是3500.0;
//x的hex是:0x455abfff,翻译成float后为 3500.0
y = 3500.0f; //y的hex是:0x455ac000,翻译成float后也是 3500.0
a = x; //此时,a值为3499
a = y; //此时,a值为3500
上面的几行程序在KEIL的软仿真里跑,就是注释中的结果。但是照抄到VC里面,x的计算结果为0x455ac000,同y值一样,并且后面给a赋值,a都是3500.
这样就是说STM32F407的float计算,同VC里面的float类型计算,精度不一样。另外,我发现,VC里面看watch中的float类型变量,显示都是8位十进制,例如0.12345678. 然而在KEIL中,watch中的float类型变量,显示都是6位十进制,例如0.123456.
请问,要做怎样的配置,才可以使得同样的程序,在KEIL中STM32F4的float计算结果同在VC中完全一样,bit to bit same?
我尝试过FPU模式的配置,如fully IEEE compatable mode, zero flush mode, different rounding settings, but dosn't seem to helpful to my problem... ... ??? |