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