[#49838] rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? — junichirou tahara <taharajunichirou@...>

anh0YWhhcmHjgajnlLPjgZfjgb7jgZnvvI4NCuePvuWcqO+8jGZsb2F05pWw44KSSEVY44Gn6KGo

14 messages 2014/06/23
[#49840] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? — EGUCHI Osamu <eguchi@...> 2014/06/23

44GI44GQ44Gh77yg44Ko44K544Ki44Oz44OJ44Kk44O844Gn44GZ44CCDQoNCjIwMTTlubQ25pyI

[#49842] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? — Nobuyoshi Nakada <nobu@...> 2014/06/23

(2014/06/23 9:29), EGUCHI Osamu wrote:

[#49843] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? — junichirou tahara <taharajunichirou@...> 2014/06/23

44G+44Gk44KC44Go5qeY77yM44GI44GQ44Gh5qeYDQrjgYLjgorjgYzjgajjgYbjgZTjgZbjgYTj

[#49844] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? — junichirou tahara <taharajunichirou@...> 2014/06/23

anh0YWhhcmHjgafjgZnvvI4NCmZsb2F0ID0+IEhFWOOBjOOBp+OBjeOBvuOBl+OBn+OBjA0KSEVY

[ruby-list:49848] Re: ruby でfloat(32bit浮動小数点)の数値をHEX表示する手法は?

From: Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
Date: 2014-06-23 10:00:45 UTC
List: ruby-list #49848
横塚です。

32ビットのfloatなので、精度はそんなものでしょう。
仮数部は23ビットなので、10進数で7桁分です。

 [3.140000104904175]

ちゃんと7桁分は正しい数値になってます。

<CADN2eS5rFj7eTY95Z0mFumqoGPvE=1Fv3furtBvCD58WGjFmOQ@mail.gmail.com> の、
   "[ruby-list:49845] Re:rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は?" において、
   "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]
> 
> 
> 2014年6月23日 16:51 junichirou tahara <taharajunichirou@gmail.com>:
> 
> > jxtaharaです.
> > float => HEXができましたが
> > HEX => floatですと,問題が発生します.
> >
> > 1)バージョンによって結果が違います
> > 2)丸め誤差が発生します
> >
> > 結果が,ruby 1.9.3だと結果が負になるのはどうなのでしょう?
> >
> > 対処方法はあるのでしょうか??
> >
> > コード
> > 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")
> >
> > 結果
> >
> > *Jruby 1.6.6
> > [3.14000010490417]
> >
> > *ruby 1.9.3p125 (2012-02-16) [i386-mswin32_100]
> > [-3.140000104904175]
> >
> >
> >
> >
> >
> > 2014年6月23日 9:57 junichirou tahara <taharajunichirou@gmail.com>:
> >
> > まつもと様,えぐち様
> >> ありがとうございました.
> >>
> >> 無事できました.
> >>
> >> これで,32Gのデータの解析ができます.
> >>
> >>
> >>
> >> 2014-06-23 9:34 GMT+09:00 Nobuyoshi Nakada <nobu@ruby-lang.org>:
> >>
> >> (2014/06/23 9:29), EGUCHI Osamu wrote:
> >>> > % ruby -ve 'p [3.14].pack("f").unpack("h*")'
> >>> > ruby 2.0.0p353 (2013-11-22 revision 43784) [amd64-freebsd9]
> >>> > ["3c5f8404"]
> >>>
> >>> hはlow nibble firstなのでHで。
> >>>
> >>>     $ ruby -e 'p [3.14].pack("f").unpack("H*")'
> >>>     ["c3f54840"]
> >>>
> >>> --
> >>> --- 僕の前にBugはない。
> >>> --- 僕の後ろにBugはできる。
> >>>     中田 伸悦
> >>>
> >>
> >>
> >
> 

--
Daisuke Yokotsuka
yokots_d@c3-net.ne.jp

In This Thread