2016-11-14 9 views
-4

10進値を端数形式に変換する簡単な方法が見つからないようです。私は大きなプログラムでこのメソッドを使う必要があるので、メソッドはdouble値を渡して文字列を返さなければなりません。小数点以下を小数点形式に変換する方法(Java)

EDIT:申し訳ありませんが、ここに新しいです。私はちょうど私が1つを作ることについて行く考えについて考えたかった。私が見た例では、使用するために独自の値を割り当てています。この方法は、私の知る限りでは

public string convertype(double decimal){ 
     (Statements) 
     return fraction; 
} 
+1

ようになり、番号など、既に作られた機能があります。自分で作成する必要があります。 また、あなたの質問ではSO基準に関して十分に具体的ではありません。 – Mornor

答えて

0
public class Fraction { 

    private int numerator, denominator; 

    public Fraction(double decimal) { 
     String stringNumber = String.valueOf(decimal); 
     int numberDigitsDecimals = stringNumber.length() - 1 - stringNumber.indexOf('.'); 
     int denominator = 1; 
     for (int i = 0; i < numberDigitsDecimals; i++) { 
      decimal *= 10; 
      denominator *= 10; 
     } 

     int numerator = (int) Math.round(decimal); 
     int greatestCommonFactor = greatestCommonFactor(numerator, denominator); 
     this.numerator = numerator/greatestCommonFactor; 
     this.denominator = denominator/greatestCommonFactor; 
    } 

    public String toString() { 
     return String.valueOf(numerator) + "/" + String.valueOf(denominator); 
    } 

    public static int greatestCommonFactor(int num, int denom) { 
     if (denom == 0) { 
      return num; 
     } 
     return greatestCommonFactor(denom, num % denom); 
    } 

    public static void main(String[] args) { 
     System.out.println(new Fraction(0.75)); 
    } 
} 
+0

私のメソッドクラスでこれをオブジェクトとして使用しようとすると、これに関するアイデアはありますか? – akhg2235

+0

@ akhg2235このようなメソッドでFractionクラスインスタンスを呼び出すだけです。 'public string convertype(double decimal){ return(新しい小数点以下桁数)。toString(); } ' – johnnynemonic

0
public class NewClass { 

    public static void main(String[] args) { 
     System.out.println(convertype(0.75)); 
    } 
    public static String convertype(double decimal){ 
     int digitsAfterPoint = String.valueOf(decimal).length() - String.valueOf(decimal).indexOf('.')+1; // get the count of digits after the point // for example 0.75 has two digits 
     BigInteger numerator = BigInteger.valueOf((long)(decimal*Math.pow(10, digitsAfterPoint))); // multiply 0.75 with 10^2 to get 75 
     BigInteger denominator = BigInteger.valueOf((long)(Math.pow(10, digitsAfterPoint)));  // 10^2 is your denominator 
     int gcd = numerator.gcd(denominator).intValue();           // calculate the greatest common divisor of numerator and denominator 
     if (gcd > 1){                    // gcd(75,100) = 25 
     return String.valueOf(numerator.intValue()/gcd) +"/" + String.valueOf(denominator.intValue()/gcd); // return 75/25/100/25 = 3/4 
     } 
     else{ 
     return String.valueOf(numerator) +"/" + String.valueOf(denominator);    // if gcd = 1 which means nothing to simplify just return numerator/denominator 
     }  
    } 
} 
関連する問題