目前我正在与之合作
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);
Run Code Online (Sandbox Code Playgroud)
但它不给我之间0,1700它给我之间-99,999(我认为).我有一种感觉,msb正在将数千个地方解释为负面.
有什么问题?
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);
Run Code Online (Sandbox Code Playgroud)
第二个arg snprintf是11 ..太短了.数字后面没有白色字符来清除以前的值,并且double r需要进行投射int r.