[ruby-list:49847] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は?
From:
junichirou tahara <taharajunichirou@...>
Date:
2014-06-23 09:59:08 UTC
List:
ruby-list #49847
たるい様
jxtaharaです
やはりCなので環境依存の誤差は出ますね.
了解しました.
ありがとうございました.
2014年6月23日 18:54 Masaya TARUI <tarui@prx.jp>:
> たるいといいます。
>
> 浮動小数点で扱う場合、誤差はC言語でもあるのでそのあたりはfloat型の誤差について調べてみてください。
>
> そのうえで、、、
> C言語でprintfすると「3.140000」と表示されると思います。たぶん。
> これと同じ表示がほしいなら、String#%
> (http://docs.ruby-lang.org/ja/2.1.0/class/String.html#I_--25)
> を使ってください。
> 具体的には、
> p "%f" % [sss].pack("H*").unpack("f")
> とすれば
> 結果は「3.140000」と表示されると思います。
>
>
>
> 2014年6月23日 16:55 junichirou tahara <taharajunichirou@gmail.com>:
> > jxtaharaです.
> > ミスタイプしていました.
> > -3.14になっているので,負の数になることはありません.
> > すみませんでした.
> >
> > 正しいコード
> > x=3.14
> > s=[x].pack("f")
> > sss=sprintf("%02X%02X%02x%02X\n", s[0].ord,s[1].ord,s[2].ord,s[3].ord)
> > p sss
> >
> > p [sss].pack("H*").unpack("f")
> >
> > です.
> >
> > 結果です.
> > やはり誤差は出ますね.
> >
> > [3.140000104904175]
> >
> >
>
>
> --
> 樽家昌也(Masaya TARUI)
> No Tool,No Life.
>