2013-05-14 12 views
6

は基本的に私は2つの変数があります:彼らは2によって分割されたようダブルに小数部分があるかどうかを確認する方法はありますか?

double halfWidth = Width/2; 
double halfHeight = Height/2; 

を、彼らはいずれかの整数または小数になります。それらが整数か0.5かどうかをどうやって確認できますか?

+2

「幅」と「高さ」整数または浮動小数点値はありますか? 'float'または' double'以外の場合、除算は 'Width'または' Height'と2(この仮説の下ではすべて整数型)の型に基づいて実行されるので、常に整数結果を得ます。結果は「double」に変換されます。 –

答えて

13

あなたはmodfを使用することができ、これは十分なはず:

double intpart; 

if(modf(halfWidth, &intpart) == 0) 
{ 
// your code here 
} 
1

まず、あなたが倍精度浮動小数点演算を使用していることを確認する必要があります。

double halfWidth = Width/2.0; 
double halfHeight = Height/2.0; 

1ので、 (すなわち、2.0)である場合、演算子を実行する前にWidthHeightをdoubleに変換するようコンパイラに強制します(まだdoubleではないと仮定します)。変換後、除算は倍精度浮動小数点で行われます。したがって、必要に応じて10進数を使用します。

次の手順は、単にmodfで確認することです。

double temp; 
if(modf(halfWidth, &temp) != 0) 
{ 
    //Has fractional part. 
} 
else 
{ 
    //No fractional part. 
} 
+0

@JonathanLeffler:それは必要ですか?整数を2で割っています。 0でない場合は、0.5でなければなりません。 –

+0

OK - あなたは私とは少し違って入力を解釈しているので、別の回答(入力に期待している正解)が出てくるのが分かります。静かに私を無視...私は行かない... –

関連する問題