如何从字符串中获取0到1700之间的随机数?

Fun*_*bat 3 c++

目前我正在与之合作

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.

Sim*_*ano 5

可能的问题是它"%d"用于整数.为了打印浮动/双打,你应该使用"%f"(浮动)或"%lf"(双打或长浮动).