TITLE: Finding lowest number to multiply a fraction and get a whole
QUESTION [0 upvotes]: I am trying to find the multiplier for a fraction that will let me get a whole number.
So trying to solve $c = a \times 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.

REPLY [0 votes]: I'd suggest this algorithm: multiply by $10$ repeatedly until you have an integer. You can now write your decimal as a fraction: $\frac{k}{10^n}$. Then, use any factorization algorithm to find the greatest common divisor of $k$ and $10^n$, 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.
{"set_name": "stack_exchange", "score": 0, "question_id": 2345457}