0

我制作了一个温度传感器函数,它在 . (例如:28.500000)

使用:

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

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

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

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

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

谢谢你,dk

4

2 回答 2

2

做这个

int tempNumber;

tempNumber = fTemp*10;

Now do this 

fTemp = (float)(tempNumber/10.0);

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

接下来我所做的是将您的临时整数除以 10.0 类型转换结果并保存回fTemp变量

于 2013-07-28T12:07:04.693 回答
1

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

#include <math.h>    

// ...

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

再说一次,你为什么要这样做?听起来更好,以保持精度并在输出时将其四舍五入。

于 2013-07-28T12:33:10.800 回答