gpt4 book ai didi

C 编程,生成两个整数之间的 float

转载 作者:行者123 更新时间:2023-11-30 17:17:33 27 4
gpt4 key购买 nike

C语言编程我想生成一个 10 到 40(含)范围内的 float (货币前 32.52)。

float money;
srand(time(NULL));
money = 10+ ( rand() % (40 - 10 + 1 ));
printf("Show amount: %.2f ",money);

这只生成整数(例如:17.00;20.00.....)

最佳答案

rand() 函数生成值在 0RAND_MAX 之间(含)的伪随机整数。您的公式涉及整数运算,因此会产生整数值。您的目标可以通过以下方式实现:

double money;

money = 10.0 + (double)rand() * 30.0 / (double)RAND_MAX;
printf("Show amount: %.2f ", money);

这将在目标范围内生成伪随机浮点值。它可能不符合您的目的,因为这些值不是整数。事实上,IEEE float 或 double 无法精确表示所有精确的分数。使用此方法您将更接近:

money = 10.0 + (double)(rand() % 3001) / 100.0;

值将尽可能接近精确的美分数,但更准确、更简单的方法是使用整数美分进行计算,并仅在打印时转换为货币:

int money = 1000 + rand() % (4000 - 1000 + 1);

printf("Show amount: %d.02d", money / 100, money % 100);

如果money可以为负数,则在打印负值时必须格外小心:

if (money < 0) {
printf("Show amount: -%u.02u", -money / 100, -money % 100);
} else {
printf("Show amount: %d.02d", money / 100, money % 100);
}

如果您决定使用浮点值,请使用double 类型。上面示例中的一些转换并不是绝对必要的,因为升级规则会使它们变得隐含,为了清楚起见,我特意编写了它们。

关于C 编程,生成两个整数之间的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29407051/

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