使用带有浮点数的模数运算符

uni*_*xia 5 c++ floating-point

有人在编程竞赛中提出这个问题: -

-1%1000000009是-1或1000000008

我想知道,这甚至可能吗?我试过我的系统,每次都得-1.另外,我必须找出10 ^ -9%10 ^ 9,我用fmod并得到答案1e-009,不应该是1吗?

我的解释: - 10 ^ -9/10 ^ 9 = 1/10 ^ 18所以,答案= 1.

请告诉我我错在哪里.

Roy*_*mir 3

预览:(我将mod称为%

就像在中一样 1%3,我们执行 (int) 1/3which is 0,然后我们问:要添加多少才能得到1

答案是1。

所以1%3=1


看着10^-9 % 10^9

为了清楚起见,让我们使用另一个数字:

2^-3 % 2^3

首先我们计算偏差的整数值:

2^-3 / 2^3 = 1/(2^3 * 2^3) = 1/64

正如你所看到的,这是一个很小的数字

所以int部分是0。

那么 - 要添加多少才能得到2^-3?这是正确的 :2^-3


关于你的具体问题:

我的解释:- 10^-9/10^9 = 1/10^18 所以,答案= 1。

1/10^18的确。

整数部分是多少?一个

从零开始,我们需要添加多少才能达到-1

是的 ,-1

只需遵循 Modulo 规则即可。

首先求整数偏差。然后问:我们需要添加多少才能得到分子。

编辑:

对于分子>分母的情况

7 % 5 = > 7 /5 => 1.4 => .4 go to hell = > you're left with 1.

但请注意。

这是 1 乘以 5。

好的,那么从 1 乘以 5 到 7 需要多少?是的:2。

更先进 :

3.111 %2 = > 3.111/2 = > 1.5555 => .555 go to hell => you're left with 1.

但这是 2 的 1 倍。

那么从 1 乘以 2 到 3.111 需要多少?是的 1.111