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

jxtaharaと申します.

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

えぐち@エスアンドイーです。

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

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

[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.
>

In This Thread