なぜ、Double.Parse(Double.MaxValue.ToString())は動かないか?

doubleはそもそも浮動小数点なのでToString()すなわち10進で表現した時点で丸目が発生する。このため、Parseで戻せない可能性がある。
これを回避するためにはrオプションを使って、Double.Parse(Double.MaxValue.ToString("r"))すればOKです。

こんなのことをまとめたサイトFrequently Asked Questions (FAQ)があったので紹介。
blogネタとして使えそうですな。