我已经制作了一个温度传感器功能,它返回一个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
答案 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;
同样,你为什么要这样做?听起来更好,保持精确度,并在它被输出时将其环绕。