Operations on doubles with very unexpected results
Hi all,
I am stumped with an issue that looks trivial but apparently isn't really ?
This code... :
double TMP117ConvertTemperatureToCelsius(uint16_t temperature) {
double temp_double = (double)temperature;
double multiplied = (double)temp_double * 7.8125f;
double converted = (double)multiplied / 1000.0f;
return (converted);
}Gives with the debugger :
- temperature (uint16_t) =2627 (correct)
- temp_double (double) = 2627 (correct)
- multiplied (double) = 20523.4375 (correct)
- converted (double) = 0 (???)
And this code... :
double TMP117ConvertTemperatureToCelsius(uint16_t temperature) {
double temp_double = (double)temperature;
double converted = (double)temp_double * 0.0078125f;
return (converted);
}gives :
- temperature (uint16_t) =2626 (correct)
- temp_double (double) = 2626 (correct)
- converted (double) = 3.0981138548092976e-312 (?????)
Have I overlooked something really basic or is something very wrong ? This is a question I never thought I'd ask but oh well :grinning_face_with_sweat:
Thanks in advance !
