>>ルートを出す演算がおかしいのでは?

大抵の浮動小数点演算ライブラリでは、平方根は、

 sqrt(x) = exp((ln x)/2)

で計算される。
ln 4は無理数なので浮動小数点で正確に表現できないのでしゃーない。

ちなみに手元のWindows 7(64bit)の電卓での誤差は、-8.1 x 10e-39なので64bitの倍精度演算だったみたいだ。
iPhoneではsqrt(4)=2で誤差なし。

結果が有理数になるとわかっている代表的な計算だけ例外処理する糞プログラムになったんだろうなwww

ちなみにWindowsの電卓は有理数は任意精度の算術を実行するので、「内部的に2が基底」かどうかは直接は関係ないよ。