У меня есть функция ниже, которая использует числа с плавающей запятой D1
и D2
. Они являются переменными в уравнении.с плавающей точкой для масштабированного преобразования int
Я не хочу использовать поплавки. Я ограничен памятью встроенной платформы, для которой я развиваюсь (библиотека с плавающей запятой большая). Я бы хотел использовать только int
. Таким образом, функция вернет int
и использует int
s в расчете.
Например, вместо 22.95 градусов функция вернет 229500 градусов.
Кто-нибудь знает, как я рассчитываю, какие значения 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);
}
Это функция, которую я хочу преобразовать, чтобы использовать только ints. int readTemperatureC() { int val; // Исходное значение, возвращаемое датчиком int temperature; // температура, полученная из необработанного значения
// 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);
}
Каков диапазон значений, возвращенное функцией 'ре adTemperatureRaw', а что такое 'sizeof int' на вашей платформе? –
Возможно, длинный D1 = -40 * 10000L; int D2 = 100; return (_val * D2) + D1; '? – chux
@MichaelWalz: Первая - это текущая реализация, а вторая - желаемая реализация. –