ものがたり(旧)

atsushieno.hatenablog.com に続く

浮動小数点の実装はエラい大変です。Doubleで言えばParse()もそうだけど、ToString()だってそう。ウソだと思ったらコレ直してみてください。ハマります。

strtodみたいな、libcの基本的な関数でも、昔Monoで引っ張ってきたBSDのソースなんかが普通に新しいバージョンに変わっていたりしたのを思い出した。そんなものを探していたのも、古いstrtod実装に無限ループのバグがあったからだ。

Googleに引き抜かれて(?)いった高校生…もう大学生か…Benも、BigIntegerからハカーになったのだけど、これもけっこう面倒なことをやっている。

Double.Parse()なんて、国際化して小数点の文字とかNumberFormatInfoを考慮して実装しても、WindowsUnicode Standardsに従っていない部分もある。MonoはUnicode標準のデータをもとにこの辺を実装しているのだけど、.NETユーザーが、数値や日付の書式が違うって言ってくる度に変更しているので、設計の観点で言えば醜いことこの上ない。って最近いじってるのは僕なんだけど。個人的には、標準技術に従っていないWindows/.NETの数値日付書式みたいな負の遺産は流しておきたいところだ。