浮点精度C - 将参数传递给Xively

时间:2013-07-28 12:01:25

标签: c floating-point xively

我已经制作了一个温度传感器功能,它返回一个6位数的浮点数。 (例如:28.500000)

使用:

float fTemp;
...
printf("Temp =  %.1f", fTemp);

我可以将温度小数限制为1,一切都很好。 (例如; 28.5)

现在我想将这个节奏传递给我的Xively帐户,我有这个功能:

extern xi_datapoint_t* xi_set_value_f32( xi_datapoint_t* dp, float v );

如何将温度值float转换为一位小数并将其传递给xi_set_value_f32?

谢谢你, DK

2 个答案:

答案 0 :(得分:2)

这样做

int tempNumber;

tempNumber = fTemp*10;

Now do this 

fTemp = (float)(tempNumber/10.0);

我在这里做的是将浮点数乘以10并保存为整数,这样我将浮点的第一个十进制数保存为整数,因此忽略了点之后的所有值。

接下来我做的是将你的临时整数除以结果,并将其保存在fTemp变量

答案 1 :(得分:1)

math.h中的标准C函数round / roundf应该这样做。

#include <math.h>    

// ...

fTemp = roundf( fTemp * 10.0f ) / 10.0f;

同样,你为什么要这样做?听起来更好,保持精确度,并在它被输出时将其环绕。