## 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);
}
}