java源码解读double转换成字符串的算法

最近翻看java源码,其中Double类的toString方法很是费解,也就是double转换成字符串的算法,源码根本看不懂,求大神给我补脑!

double根据ieee754浮点数标准,分为阶符、阶码、符号和尾数四个部分。
首先要做的是转换成10进制的形式,把尾数转换为10进制,如果符号有的话,那么加上负号。
然后根据阶符不同,如果为正,乘以2的阶码次方,反之除以2的阶码次方。
关于尾数转换为十进制,比如0.10100110[2]转换为10进制,就是每一位乘以2^(-N)次方,最后把结果加起来。
当然,java的转换还涉及科学计数法,那么就更复杂一点了。