2011-01-12 11 views
11

浮動小数点数に2.00,2.45,12382.66のような小数点が含まれ、2.00,12382.00でないかどうかを確認するにはどうすればよいですか?数字が「丸い」かどうかを知りたい。プログラムでそれをどうすればできますか?あなただけの約2小数を気にしている場合浮動小数点数に小数点が含まれているかどうかを確認

+1

Objective Cのために、このC関数を使うのか?プログラム的な解決策が必要な場合は、さらに情報を提供してください。 – skaffman

+2

(あなたが働いている言語) – dkarp

答えて

5

は、this topicで説明したように、小数部分を取得し、一般的なケースでbool hasDecimals = (((int)(round(x*100))) % 100) != 0;

を計算することによって、残りを取得し、あなたがこれを行うことができます0

+2

これは私のために美しく働いた。私はObjective-C btwを使用しています。あなたが評価している小数の数が分かっている限り、これは簡単で仕事をします。また、10を乗算して小数点以下の桁数を乗じることで、上記サンプルの「100」を置き換えることで、より柔軟にすることができます。 – idStar

3

と比較:

float num = 23.345f; 
    int intpart = (int)num; 
    float decpart = num - intpart; 
    if(decpart == 0.0f) 
    { 
    //Contains no decimals 
    } 
    else 
    { 
    //Number contains decimals 
    } 
40

弾性率が動作します使用:

if(num % 1 != 0) do something! // eg. 23.5 % 1 = 0.5

+2

偉大な答えですが、これは[PHP](http://php.net/manual/en/language.operators.arithmetic.php)では動作しません: "モジュラスのオペランドは整数に変換されます(小数部を取り除くことによって)処理する前に。 – Daan

6

私は彼らを見ることによって

BOOL CGFloatHasDecimals(float f) { 
    return (f-(int)f != 0); 
} 
2
import java.lang.Math; 
public class Main { 
    public static void main(String arg[]){ 
     convert(50.0f); 
     convert(13.59f); 

    } 

    private static void convert(float mFloat){ 
     if(mFloat - (int)mFloat != 0) 
      System.out.println(mFloat); 
     else 
      System.out.println((int)mFloat); 
    } 
} 
関連する問題