如何找到,如果double
價值甚至或奇沒有在C#將其轉換爲int
?例如。查找雙人/浮點值是奇數還是偶數在C#
123.0d - odd
456.0d - even
3.1415926d - floating point (neither odd nor even)
如何找到,如果double
價值甚至或奇沒有在C#將其轉換爲int
?例如。查找雙人/浮點值是奇數還是偶數在C#
123.0d - odd
456.0d - even
3.1415926d - floating point (neither odd nor even)
嘗試模%
操作:
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
@CodeCaster:'double'代表小*整數值*沒有舍入錯誤:'double'只是整數尾數https://en.wikipedia.org/wiki/Double-precision_floating-point_format –
負1哦,我知道了...不錯 – Joe
@Joe:是的,根據.net'-3%2 == -1' –
public bool isEven(double value)
{
decimal decVal = System.Convert.ToDecimal(value);
if (decVal % 2.0 == 0)
{
return true;
}
else
{
return false;
}
}
編輯:如果轉換爲十進制首先它應該工作。
public static bool IsEven(double x)
{
return x % 2 == 0;
}
請注意,它需要更多的代碼,以使,這是否比它真正做到這一點,所以如果你把這個在生產環境中期待你的QA團隊送你討厭E-一個輔助方法郵件。
您的質量檢查小組會檢查代碼並對其進行審覈嗎?這似乎很奇怪。我只希望代碼能夠被其他程序員查看。也就是說,當我回顧有這種方法的代碼時,我*當然*不會建議刪除它。小方法根本沒有問題。 – Servy
它被稱爲*抽象* - OOP的四大支柱之一。 'foo = IsEven(x)'比'foo = x%2 == 0;'*更具表現力,特別是*如果你在200個位置內嵌了該邏輯。 –
嗯,我覺得你自己回答了你的問題,但這裏是一個簡短的代碼,我寫道:
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();
}
這種方式,你看真的好,如果它工作或不
如果'number == 3.1415926'怎麼辦?你的例程返回'「你的號碼很奇怪!」'這聽起來有點奇怪* ... –
你會如何找出是否一個'int'是偶數還是奇數? – Servy
我很困惑。是2.5奇數還是偶數? – stuartd
如果(int%2 == 0)甚至奇怪 –