タグ

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

  • round関数その8:RubyとPythonのround関数は奇妙じゃないんですか? - hnwの日記

    さて、今回はRubyPythonの題名をつけてしまいましたけど、それらの言語だけに限らないような話題です*1。早速ですが、FreeBSD環境を用意してください(おそらくSPARC Solaris環境やMac OS X環境でも同じ結果だろうと思いますが、僕は確認していません)。 $ ruby -e 'x=0.49999999999999994; printf("%.19f\n%.19f\n", x, x.round());' 0.4999999999999999445 1.0000000000000000000 $ python -c 'x=0.49999999999999994; print "%.19f\n%.19f" % (x, round(x))' 0.4999999999999999445 1.0000000000000000000どう見ても0.5未満の数を四捨五入して1になって

    round関数その8:RubyとPythonのround関数は奇妙じゃないんですか? - hnwの日記
    yshl
    yshl 2007/06/29
    さらに深追い
  • round関数その6:啓蒙とお詫び - hnwの日記

    Referer一覧の存在に気づいたので、リンクして下さっている方々の文章を今更読んでいます。ただ、おそらく浮動小数点数の扱いが拙いのをround関数のせいにしているような文章を見つけました。もしそういう誤解があれば非常に残念だと思うと同時に、これだけ注目を集めたからには浮動小数点数一般の罠について簡単に紹介してみても良いかな、と思いつきました。浮動小数点数まわりでハマった人がここに検索でやってくることがあるかもしれません。 そんなわけで、今回のテーマは啓蒙です。浮動小数点数の不思議さについて簡単な紹介記事を書いてみました。また、第1回記事中の誤っている点について、1点訂正をします。今回はイメージ先行で書いてみましたが、伝えていないことはあっても嘘は書いていないつもりです。正確な内容が知りたくなった方はWikipediaの記事「浮動小数点数」を読むと良いでしょう。または、そこからリンクされて

    round関数その6:啓蒙とお詫び - hnwの日記
    yshl
    yshl 2007/06/13
  • round関数で整数を四捨五入してみる - hnwの日記

    今日はPHPのround関数に関して前回と違った切り口で紹介してみます。また、コンピュータ上での整数についても少し紹介してみます。 前回の記事「PHPの奇妙なround関数」([id:hnw:20070515])を読んで、小数点が付いた数なんてPHPで触ったことないから関係ないや、なんて考えた方が居るかもしれません。そんな方のために、今回は整数を四捨五入してみます。 PHPのround関数は、省略可能ですが第2引数を取ることもできます。これは、何桁目までで丸めるかの指定です。デフォルトは0です。例えば第2引数に2を指定すると、小数点以下第3位を四捨五入して小数点以下第2位までに丸めてくれます。 ここにマイナスの数を指定することで、1の位より上の桁で四捨五入をすることもできます。たとえば、下記のように第2引数に-2を指定すれば100の位で丸められます。これは仕事でプログラムを書く際にも使える

    round関数で整数を四捨五入してみる - hnwの日記
    yshl
    yshl 2007/06/02
  • 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関数
    yshl
    yshl 2007/05/16
  • 1