[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はできる。
>> 中田 伸悦
>>
>
>