gpt4 book ai didi

C++:导致数字在成功某个值时溢出并从零开始?

转载 作者:行者123 更新时间:2023-11-28 00:00:54 24 4
gpt4 key购买 nike

假设我有一个名为 foo 的 float 。 foo 以一定的间隔增加或减少。一旦 foo 成功达到指定的数字/,我怎样才能让 foo 再次从零开始,而对于递减则相反?

例如:

int max = 0;
int min = 50;
float foo = 45;
foo += 7.5;

foo 现在是 52.5。但由于我在最大数量上指定了 50,我希望它在那个点溢出,以便结果仅为 2.5。

或者:

int min = 0;
int max = 50;
float foo = 45;
foo += 108.3;

结果应该是 3.3。刚溢出3次。

反之:

int min = 0;
int max = 50;
float foo = 1;
foo -= 5.5;

结果为 -4.5,但应为 44.5。

我在想也许这样的事情可以解决问题:

foo = foo % max;
if (foo <0)
foo+=max;

但 % 仅适用于整数,包括一个库只是为了获得 fmod 感觉有点过分了。

无论如何,我想知道这是否可行,是否可以用更少的代码完成,是否可以在没有 fmod 的情况下完成。

最佳答案

因为 #include <fmod>太主流了,你可以用;

if(foo > max)
{
int c = foo / max;
foo = foo - max*c;
}
else if(foo < min)
{
int c = foo / max;
if( c < 0 ) c = c * -1;
foo = foo + max*c;
foo = max + foo;
}

结果:

对于:

int min = 0;
int max = 50;
float foo = 1;
foo -= 5.5;

cpp.sh/4akud

对于:

int min= 0;
int max= 50;
float foo = 45;
foo += 7.5;

cpp.sh/3accv

关于C++:导致数字在成功某个值时溢出并从零开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015679/

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