2016-07-07 3 views
2

浮動小数点数を整数値で求めなければならないアプリケーションを開発しています。浮動小数点数を整数で取得

たとえば、私の番号が153.12324の場合、出力は12324になります。この方法で試しましたが、しばらく時間がかかります。

これにはどのような問題がありますか?これを行うにはより良い方法がありますか?

D

double d =any_double_value; 
    String[] splitter = String.valueOf(d).split("\\."); 
    splitter[0].length(); // Before Decimal Count 
    int count = splitter[1].length(); 
    int integerpart = (int) calcResult; 
    double floatpart = calcResult - integerpart; 
    while (count!=0) 
    { 
     floatpart=floatpart*10; 
     count--; 
    } 

    int floatpartinInt=(int)floatpart; 

でdouble値は、これが唯一のいくつかのケースでは、間違った作品(答えが124であれば、それは123を与えるように、それは、より少ない1つの番号を与える)と答えが長いダブルノーである場合にあり以下のような3.333333333(10/3)

+0

をあなたは 'の部分*端数を取得*' を意味するのですか? – EJP

+0

すばらしい間違い:1.00023と1.000229は23と229を与えます。浮動小数点は大雑把な近似であり、文字列としての正確な桁数はありません。 –

答えて

0

使用このコードお使いの場合、その作業とsplitせずにもすることができますマン

double val=1.9; 
    String[] arr=String.valueOf(val).split("\\."); 
    int[] intArr=new int[2]; 
    intArr[0]=Integer.parseInt(arr[0]); // 1 
    intArr[1]=Integer.parseInt(arr[1]); // 9 
3

をお楽しみください。以下の方法を使用することにより、

double value = 3.25; 
double fractionalPart = value % 1; 
double integralPart = value - fractionalPart; 

この5月はあなたに

0

を助けます。また、これを行うことができます:

lvalue = (long) value; 
fPart = value - lvalue; 
関連する問題