2014-06-08 41 views
5

有人問這個問題,在程序設計大賽: -使用模運算符與花車

-1%1000000009爲-1或1000000008

我想知道,這甚至可能? 我在我的系統中試過,每次都得到-1。 此外,我必須找出10^-9%10^9,我用fmod並得到答案1e-009,不應該是1?

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

請告訴我,我錯了。

+0

至於你的'fmod'問題:[每個程序員應該知道什麼關於浮點運算](http://floating-point-gui.de)。 – usr2564301

+1

@Jongware我正在編寫一個程序,所以我需要清楚地看到程序中發生了什麼。這沒有幫助。任何其他幫助? – unixia

+1

'%'不是浮點運算符 –

回答

3

預覽:(我將把mod%

就像在1%3,我們做(int) 1/3這是0,然後我們要問:多少,以便獲得1補充的嗎?

答案是1

這樣1%3=1


看着10^-9 % 10^9

讓我們用另一個數字,淨度:

2^-3 % 2^3

首先我們calc下的偏差的整數值:

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

yup,-1

只需遵循Modulo的規則。

先找到整數偏差。然後問:爲了得到分子,我們需要添加多少。

編輯:

的情況下分子>分母

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

但通知。

這是1次5

確定,所以從1次5 - 多少需要去7? YES:2

更先進:

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

但是這是2

從2 1次

所以1次 - 這多少需要去3.111? yup 1.111

+0

這是否意味着在所有情況下,例如分子是一個浮點數,分母是整數類型並且比浮點數大得多,答案只會是浮點數(最初是分子)? – unixia

+0

@ user3715736即使分子有橙子浮動,分母有整數的蘋果:你首先(!)將結果(!)的迭代器部分設置爲2.111%3 => 2.111/3 => 0.7033 =>。 7033去地獄=>你留下0 =>所以我們需要多少2.111? 2.111' –

+1

'%'不適用於浮點類型。你不能寫'3.111%2' –