Showing posts with label Mathematical. Show all posts
Showing posts with label Mathematical. Show all posts

Wednesday, 28 December 2016

Smallest Integer multiplication to floating number which convert it to natural

We need to find the Integer Multiplier to convert a floating number to Natural.

Input : 1.66
Output : 50

Input : 0.25
Output : 4

public class MinMulToMakeNatural {

     /**
      * Get Minimum multiplier to make Natural.
      * @param number
      * @return min mult.
      */
     private static int getMinMultiplier(float number) {
           char[] array = (number+"").toCharArray();
          
           int len = array.length;
           int numerator = array[0]- '0';
           int count = 0;
          
           boolean flag = false;
           for (int i = 1 ; i <= len-1; i++) {
                if('.'==array[i]) {
                     flag= true;
                     continue;
                }
               
                if(flag) {
                     count++;
                }
               
                int val = array[i] - '0';
                numerator = numerator * 10 + val;
           }
          
           int denominator = (int)Math.pow(10,count);
          
           int gcd = getGCD(numerator,denominator);
          
           return denominator/gcd;
     }   
    
     /**
      * @param numerator
      * @param denominator
      * @return GCD
      */
     private static int getGCD(int numerator, int denominator) {
          
           int gcd = denominator==0?numerator:
                getGCD(denominator, numerator%denominator);
          
           return gcd;
     }

     /** Main method. */
     public static void main(String[] args) {
           float number = 1.66F;
          
           int min = getMinMultiplier(number);
          
           System.out.println("Minimum Integer Multiplier# "+min);
     }
}
Related Posts Plugin for WordPress, Blogger...