Hi.
Long time ago i worked on a idle and to tackle this i used multiple floats.
i checked if greater than for example 1.000.000 when greater deduct 1.000.000 to float 1 and add 1 to float 2. do the same on float 2 to float 3.
But i am not sure if it can handle up to 1e+300.
Also starting @ 0.000001 but displaying it as 1 could increase the limit.
another possibility is to use some sort of levels. if you reach a certain amount per level for example 1.000.000
Start doing 1000 per second and display it as 1M/1,001M/1,002 and so on.
When player purchase something and comes below 1M, show some random numbers (from lower to higher of course else its obvious) as this would show only a split second.
This way player never notice that the counting is not 100% accurate.