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

时间:2014-06-08 12:39:54

标签: c++ floating-point

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

-1%1000000009是-1或1000000008

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

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

请告诉我错在哪里。

1 个答案:

答案 0 :(得分:3)

预览:(我会将mod称为%

1%3一样,我们(int) 1/3 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

整数部分是什么? a

从零开始,我们需要添加多少才能获得-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次的2次。

所以从2的1倍 - 到3.111需要多少钱?是的1.111