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);
}
}
No comments:
Post a Comment