Quale sarebbe il punto di una divisione per 3 nella tua domanda? Non vedo come questo avrebbe un significato in un tipo di applicazione di questo tipo.
Ad ogni modo, quello che suggerisco è usare librerie che consentono numeri di precisioni aritrarie, qualcosa come queste librerie e limitarle a un massimo di diciamo 50 decimali nel caso in cui i numeri periodici, se necessario, non credo che avresti bisogno di più di quello.
Se in qualche modo trovi un numero in cui è presente un traine di nove, puoi scrivere una funzione per arrotondare al numero più vicino, quindi qualcosa come 4.5849999999 ... 9, verrà arrotondato a 4.585. La possibilità che non sia quel numero in realtà è così bassa che dubito che ci sarebbe più di un caso in diversi miliardi di anni, quindi sembra abbastanza sicuro farlo.