2017-05-19 84 views
-3

如何找到,如果double價值甚至沒有在C#將其轉換爲int?例如。查找雙人/浮點值是奇數還是偶數在C#

123.0d  - odd 
456.0d  - even 
3.1415926d - floating point (neither odd nor even) 
+0

你會如何找出是否一個'int'是偶數還是奇數? – Servy

+10

我很困惑。是2.5奇數還是偶數? – stuartd

+1

如果(int%2 == 0)甚至奇怪 –

回答

5

嘗試模%操作:

double x = 123; 

string result = x % 2 == 0 
    ? "even" : x % 2 == 1 || x % 2 == -1 
    ? "odd" 
    : "floating point"; // e.g. 123.456789 

編輯:當它的工作原理?浮點數值(single,double)不包含時指數部分表示(整數)值恰好爲

https://en.wikipedia.org/wiki/Single-precision_floating-point_format https://en.wikipedia.org/wiki/Double-precision_floating-point_format

所以,對這個解決方案將工作時x在這些範圍內

[-2**24..2**24] == [-16777216..16777216]     (float) 
[-2**52..2**52] == [-4503599627370496..4503599627370496] (double) 

請,通知,既然淨假設negative % positive == nonpostive,例如-3 % 2 == -1我們要檢查x % 2 == -1以及x % 2 == 1

+1

@CodeCaster:'double'代表小*整數值*沒有舍入錯誤:'double'只是整數尾數https://en.wikipedia.org/wiki/Double-precision_floating-point_format –

+0

負1哦,我知道了...不錯 – Joe

+0

@Joe:是的,根據.net'-3%2 == -1' –

-2
public bool isEven(double value) 
{ 
    decimal decVal = System.Convert.ToDecimal(value); 
    if (decVal % 2.0 == 0) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

編輯:如果轉換爲十進制首先它應該工作。

+0

如果我想測試'odd',該怎麼辦? –

+4

'返回值%2 == 0' – stuartd

+0

如果isEven()返回false,那麼您的值已經是奇數,我已經試過了,但沒有使用 –

-1
public static bool IsEven(double x) 
{ 
     return x % 2 == 0; 
} 

請注意,它需要更多的代碼,以使,這是否比它真正做到這一點,所以如果你把這個在生產環境中期待你的QA團隊送你討厭E-一個輔助方法郵件。

+2

您的質量檢查小組會檢查代碼並對其進行審覈嗎?這似乎很奇怪。我只希望代碼能夠被其他程序員查看。也就是說,當我回顧有這種方法的代碼時,我*當然*不會建議刪除它。小方法根本沒有問題。 – Servy

+1

它被稱爲*抽象* - OOP的四大支柱之一。 'foo = IsEven(x)'比'foo = x%2 == 0;'*更具表現力,特別是*如果你在200個位置內嵌了該邏輯。 –

0

嗯,我覺得你自己回答了你的問題,但這裏是一個簡短的代碼,我寫道:

static void Main(string[] args) 
    { 
     double number=10.0; 

     if(number%2==0) 
     { 
      Console.WriteLine("Your number is even!"); 
     } 
     else 
     { 
      Console.WriteLine("Your number is odd!"); 
     } 
     Console.ReadLine(); 
    } 

這種方式,你看真的好,如果它工作或不

+0

如果'number == 3.1415926'怎麼辦?你的例程返回'「你的號碼很奇怪!」'這聽起來有點奇怪* ... –

相關問題