C/C++如何减少浮点数变量的有效小数

Ian*_*ici 1 c c++ floating-point

生成[0,1.0]之间的随机数

i = (float) rand() / RAND_MAX / 1;
Run Code Online (Sandbox Code Playgroud)

我不只是想打印一个小数点,我希望变量有一个小数点我们怎么做?

(即0.1;不是0.1224828)

Dav*_*nan 6

你实际描述的是一个随机整数,可能的值在0到10的范围内.所以你会写:

int i = rand() / (RAND_MAX / 11 + 1);
Run Code Online (Sandbox Code Playgroud)

或者实际上是产生整数的其他方式,i使得0 <= i <= 10.

现在,i你的价值是否达到了10.

如果你想要除以10,那就这样做:

float f = i / 10.0;
Run Code Online (Sandbox Code Playgroud)

请注意,二进制浮点变量不能精确地表示0.1,0.2,0.3,0.4,0.6,0.7,0.8和0.9.列表中唯一可以精确表示的值是0.0,0.5和1.0.这就是为什么最好将信息存储在整数变量中.

注意:正如其他人所指出的那样(谢谢),明显的rand() % 11随机性很差.我更新了答案以避免使用它.