[#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:49844] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は?

From: junichirou tahara <taharajunichirou@...>
Date: 2014-06-23 07:51:13 UTC
List: ruby-list #49844
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はできる。
>>     中田 伸悦
>>
>
>

In This Thread