タグ

ブックマーク / hnw.hatenablog.com (5)

  • RubyとPythonとC#のround関数のバグっぽい挙動について - hnwの日記

    (12/29 20:40追記)「(追記)なぜMySQLのdecimal型を例に使ったかについて」というセクションを追加しました。また、コメントを頂戴したので返信しました。 (12/29 21:30追記)C#について言えば「Math.Round メソッド (Double, Int32)」に内部実装がどうなっているか書いてあるので仕様通りであり、誤解しようが無いという情報を頂きました。ありがとうございます。そしてごめんなさい、確かにバグじゃないです! (12/29 21:50追記)Pythonのround関数のドキュメントにも誤差が入るかもしれないという記述があります。しかし、内部実装の紹介があった方がいつどういう誤差が入るかわかるので親切かなという気がします。また、浮動小数点数の性質上誤差が入るのは仕方が無いかのような記述に見えるのですが、浮動小数点数を使っていても誤差の入らない実装がありう

    RubyとPythonとC#のround関数のバグっぽい挙動について - hnwの日記
    sirocco
    sirocco 2013/12/29
    Haskellでは round (0.5 :: Double) が0になるようです。http://stackoverflow.com/questions/10738569/round-to-nearest-integer
  • Haskellのカッコいいところを紹介してみる - hnwの日記

    あけましておめでとうございます。年もよろしくお願いいたします。 唐突ですが、Haskellを少しやってみたので、その感想を書いてみます。 僕は正月休みにHaskellでProject Eulerに挑戦していました。これは、数学っぽい問題をプログラムを書いて解いていくサイトです。数学は再帰的な定義が多いため関数型言語が向いているだろうと考え、ほぼ未経験のHaskellを試してみました。 解けそうな問題から50問解いてみましたが、随分スラスラ書けるようになってきた気がします。また、書いていると不思議と気持ちがいい言語だという印象を受けました。気持ちよさは複合的なものだと思いますが、その要因になっていそうな特徴を紹介してみます。 数学英語の知識で「読める」表現が多い いきなり印象論なんですが、Haskellのコードは初見でもそこそこ読める気がします。中の人が読みやすさを大事にしているためだろ

    Haskellのカッコいいところを紹介してみる - hnwの日記
    sirocco
    sirocco 2013/01/11
    on と言う関数を初めて知った。
  • PHPの==がキモい件 - hnwの日記

    どうやら僕はround()の人なんだそうです(参考資料)。それはそうとして、もう少し前までは==の人だった気がしますので、その頃の話題を再掲します。 僕は2年ほど前に「==がキモい件」などのタイトルで勉強会で発表していた頃がありました。PHPの==演算子の挙動について、啓蒙が必要だろうと考えていたためです。当時に比べれば最近はPHPの==演算子の不思議な挙動に関する記事を見る気がしますが、まだまだキモさの全容を把握している人は少ないような気もします。 PHPの==演算子の何がキモいのか、一言で言うと両辺の値の型をテキトーに合わせて比較する点です。言い換えると、「型はさておき、等しい値を意味しているようならtrue」という演算子です。 マニュアルの「PHP 型の比較表」の「==による緩やかな比較」を見てもキモさがチラホラ見えるんですが、今回は更に突っ込んだ比較表を作ってみました。 まずは以前

    PHPの==がキモい件 - hnwの日記
    sirocco
    sirocco 2008/06/07
  • Rubyの浮動小数点数リテラルの扱いは正しいのか - hnwの日記

    題名の通りなんですが、前回の記事「PHP以外全員不正解」に対して「ダウト!」を頂戴したのでまとめてみます。 Cのこの動作が、唯一無二絶対のものであるとする根拠はどこにあるのでしょうか? strtod によれば、 If the subject sequence has the decimal form and at most DECIMAL_DIG (defined in ) significant digits, the result should be correctly rounded. If the subject sequence D has the decimal form and more than DECIMAL_DIG significant digits, consider the two bounding, adjacent decimal strings L and

    Rubyの浮動小数点数リテラルの扱いは正しいのか - hnwの日記
  • hnwの日記 - PHPの奇妙なround関数

    (2012/11/01追記) 4年ほど前の記事「PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった - hnwの日記」でお伝えした通り、PHP 5.3.0から別の実装が採用されており、ページで指摘しているような挙動のPHPは既に絶滅危惧種です。念のため。 さて、プログラミングの話題もたまには書いてみます。今回はPHPのround関数の挙動が変だ!という話題です。 round()は浮動小数点数を四捨五入する関数で、大抵の言語に同じ名前で実装されているかと思います。ではPHPのround関数の何が問題なのか、ちょっと試してみましょう。 $ uname -sro Linux 2.6.9-42.0.10.plus.c4smp GNU/Linux $ php --version PHP 5.1.6 (cli) (built: Feb 23 2007 06:56:38)

    hnwの日記 - PHPの奇妙なround関数
    sirocco
    sirocco 2007/06/02
  • 1