From: Masaya TARUI Date: 2014-06-23T18:54:54+09:00 Subject: [ruby-list:49846] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? たるいといいます。 浮動小数点で扱う場合、誤差は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 : > 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.