I am currently working with
double fRand(double fMin, double fMax)
{
double f = (double)rand() / RAND_MAX;
return fMin + f * (fMax - fMin);
}
double RangeFinder::getRange(void) {
return fRand(0, 1700);
};
char range[12];
double r = rangeFinder.getRange();
snprintf(range, 11, "range: %d", r);
But it does not give me between 0, 1700giving it to me between -99, 999(I think). I have the feeling that msb interprets thousands as negative.
What is the fix?
Edit
fixed version
double fRand(double fMin, double fMax)
{
double f = (double)rand() / RAND_MAX;
return fMin + f * (fMax - fMin);
}
double RangeFinder::getRange(void) {
return fRand(0, 1700);
};
char range[22];
int r = rangeFinder.getRange();
snprintf(range, 22, "range: %i ", r);
LCDString(range);
the second argument snprintfwas 11 .. too short. after the number there were no white characters to remove the previous values, but double rit was necessary to distinguish int r.
source
share