Finding lowest number to multiply a fraction and get a whole I am trying to find the multiplier for a fraction that will let me get a whole number. So trying to solve c=a xx b Where a is a number like 1.6 or 0.7 or 5.24 Where b is the lowest number that a can be multiplied by to make c a whole number. The use case is in a game I am programming the currency is only in whole numbers of a single denomination (single gold coins) if the player wants to sell a quantity of items that are worth a fractional value like 1.6, how many must they sell so they can receive a whole number without throwing out the fractions.
Leia Hood
Open question
2022-08-15
Finding lowest number to multiply a fraction and get a whole I am trying to find the multiplier for a fraction that will let me get a whole number. So trying to solve Where is a number like or or Where is the lowest number that can be multiplied by to make a whole number. The use case is in a game I am programming the currency is only in whole numbers of a single denomination (single gold coins) if the player wants to sell a quantity of items that are worth a fractional value like , how many must they sell so they can receive a whole number without throwing out the fractions.
Answer & Explanation
Brooks Hogan
Beginner2022-08-16Added 18 answers
Multiply by to get
When a rational number is expressed as a fraction that is fully reduced meaning , with (n, numerator; d, denominator, each an integer,) then we have
and so
That is, any rational number expressed as a fully reduced fraction where the numerator and denominator are co-prime, then the lowest integer value for is given by , where is the denominator of the fully reduced fraction =
Mark Elliott
Beginner2022-08-17Added 6 answers
I'd suggest this algorithm: multiply by repeatedly until you have an integer. You can now write your decimal as a fraction: . Then, use any factorization algorithm to find the greatest common divisor of and , and divide both the numerator and denominator by that. This puts the fraction in lowest terms, and now the denominator is the number you wanted. For the record: This is a horribly inefficient algorithm. If you need it to be fast (for example, if you're trying to do billions of these calculations) you'll want to do something else. But it'll work if you're only trying to do it a hundred times a second, or something like that.