You seem to misunderstand. The test code I offered above takes advantage of varying ranges to distinguish between known types. The code tests range by doing a string->FP->string round-trip and comparing the result to the original string. It also directly tests available precision by adding a (smaller) value and testing if the sum is larger than the initial value. The highest of these tests that passes defines the number of digits of precision to use.
It also looks like you may have found a better way to do this that does not require determining the FP type in advance?