Deep down, everything is
In practice, what this means is you should establish the minimum unit and maximum divisibility your app supports. For example, a "dollar" (generally) has two decimals (penny) and no further division is (generally) possible.
Suppose you want up to 4 decimal places. Use integers raised by 10**4. It is a best practice to externalize this concern from the contract. That is, leave it to clients to convert contract style numbers to human-readable notation.
purchasePrice: 12000 // using 4 decimal places consistently
The ERC20 token standard and ethereum itself both use fixed decimal places and integer math internally, relying on clients to convert to human-readable notation. ERC20 leaves the decision about the number of decimals to the developer. That global parameter signals wallets and exchanges so they can know how to present the integer values.
Hope it helps.