Accessing these values for a particular locale can be managed through the DecimalFormat class. For the conversion algorithm, changing the decimal character and the prefix and suffix characters is obviously strightforward. Adding in the thousands separator is slightly more challenging. The decision to print a thousands-separator character is then straightforward. Testing The proof of the pudding is in the eating, so let's test out this effort.
Times are the averages over several test runs.
HotSpot times are shown for a second run of tests without exiting the VM, so that the server-tuned VM has time for its optimizations to kick in. Times for converting doubles to strings using various methods and VMs. The test results show several interesting things. Firstly, the two tests using my algorithms produced relatively close timings in each VM, but which test was the faster depended on the VM being used. The time taken to format numbers depends on the number of digits being printed.