【发布时间】:2016-11-14 16:27:36
【问题描述】:
下面有一个函数使用浮点数D1 和D2。它们是方程中的变量。
我不想在我开发的嵌入式平台上使用内存受限的浮点数(浮点库很大)。我只想使用ints。因此该函数将返回一个int 并在计算中使用ints。
例如,该函数将返回 229500 度而不是 22.95 度。
有人知道我如何计算D1 和D2 应该变成什么值吗?
函数返回值的取值范围是-40到120度。
int 的大小为 4 个字节。
float readTemperatureC()
{
int val; // Raw value returned from sensor
float temperature; // Temperature derived from raw value
// Conversion coefficients from SHT15 datasheet
const float D1 = -40.0; // for 14 Bit @ 5V
const float D2 = 0.01; // for 14 Bit DEGC
// Fetch raw value
val = readTemperatureRaw();
// Convert raw value to degrees Celsius
temperature = (_val * D2) + D1;
return (temperature);
}
这是我要转换为仅使用整数的函数。 int readTemperatureC() { 整数值; // 从传感器返回的原始值 国际温度; // 原始值得出的温度
// Conversion coefficients from SHT15 datasheet
const int D1 = ?; // for 14 Bit @ 5V
const int D2 = ?; // for 14 Bit DEGC
// Fetch raw value
val = readTemperatureRaw();
// Convert raw value to degrees Celsius
temperature = (val * D2) + D1;
return (temperature);
}
【问题讨论】:
-
函数
readTemperatureRaw返回的值范围是多少,你的平台上sizeof int是多少? -
或许
long D1 = -40*10000L; int D2 = 100; return (_val * D2) + D1;? -
我们需要 RAW 值的范围(不是计算温度的范围)。
-
你还没有提到是什么阻止你做
_val / 100 - 40。 -
@barakmanos True - 删除评论(我专注于这个comment