c语言打印浮点数错误,printf打印浮点数出错

贴上程序,主要是返回值temp,我设定为float,  函数f_myfunc_get_temp(int16_t data)返回值也设定为 float,打印设定为%6.2f,输出0.00;设定为%d输出为1102577664;如果把函数 f_myfunc_get_temp(int16_t data)设定为int,也就是int f_myfunc_get_temp(int16_t data),打印%d输出是正确的,但只是整型

程式中红色字体计算出来的小数点部分好像被省略掉了,奇怪的

我用debug看,也是这样

,

int16_t f_myfunc_find_ntc(u16_t data)

{

u16_t  start, mid, end;

u16_t  dat;

start = 0;

end = 110;

if ((data > 3986) || (data < 767))

{

return 0xffff;

}

while (start <= end)

{

mid = (end + start)/2;

dat = ntc[mid];

if (data > dat)

{

end = mid - 1;

}

else

{

start = mid + 1;

}

}

return mid;

}

float f_myfunc_get_temp(int16_t data)

{

int index = 0;

double temp = 0.05;

index =  f_myfunc_find_ntc(data);

if (0xffff == index) // 数据格式不正确

{

return 0xffff;

}

if (ntc[index] == data) // 正好相等

{

temp = index-30;

}

else

{

if (ntc[index] < data)

{

temp = (index-1) -30  +  (float)((data-ntc[index-1]) / (ntc[index]-ntc[index-1]));

}

else

{

temp = index - 30 +  (float)((data-ntc[index]) / (ntc[index+1]-ntc[index]));

}

}

return temp;

}

int main(void)

{

/* USART1 config */

USART1_Config();

/* enable adc1 and config adc1 to dma mode */

ADC1_Init();

while (1)

{

float P = 35.55;

ADC_ConvertedValueLocal =ADC_ConvertedValue; // 读取转换的AD值

printf("\r\n f_myfunc_get_temp is %6.2f℃\r\n",f_myfunc_get_temp(ADC_ConvertedValueLocal));

Delay(0xffffee);                              // 延时

}