gpt4 book ai didi

c - 优先规则 - 使用括号和除法与 srand 获取 float 时出现问题

转载 作者:行者123 更新时间:2023-12-04 02:43:35 25 4
gpt4 key购买 nike

我正在尝试操作 srand,以便 srand 按除法返回一个十进制数。但它不起作用。即使优先规则应该在除法之前优先考虑括号,我的代码也不会返回十进制数。

#include <stdio.h>
#include <math.h>

int main(void) {

double save;

srand(time(NULL));

save = (rand() % 100)/ 10;

printf("%f", save);

return 0;
}

但是这段代码工作正常,但我对解决方案不满意。

#include <stdio.h>
#include <math.h>

int main(void) {

double save;

srand(time(NULL));

save = rand() % 100;

save = save / 10;

printf("%f", save);

return 0;
}

谁能解释一下并给出更好的解决方案?

最佳答案

这段代码的问题:

double save;
save = (rand() % 100) / 10;

不在运算符的优先级,但因为除以整数常量 10 .尝试:

save = (rand() % 100) / 10.0;

但如果您想从区间 <0; 10) 生成数字最好这样做:

save = ((double)rand() / ((double)RAND_MAX + 1.0)) * 10.0;

这将产生更精确的结果,也将更均匀地分布:)

关于c - 优先规则 - 使用括号和除法与 srand 获取 float 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19335352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com