什么是Java的Double.doubleToLongBits()的perl等价物?

时间:2016-08-25 13:14:46

标签: perl ieee-754

我有两个浮点数,我想计算它们在最后位置(ULP)中的单位差异。在Java中,这是:

Double.doubleToLongBits(a) - Double.doubleToLongBits(b)

Perl中的等价物是什么?

1 个答案:

答案 0 :(得分:3)

在具有双精度浮点数 [1] 的Perl和大小至少为64位的无符号整数 [2] 中,您可以使用以下内容:

unpack('Q', pack('d', $n))

例如,

$ perl -e'
   use Config qw( %Config );

   die("Not supported\n")
      if $Config{nvsize} != 8
      || $Config{uvsize} < 8;

   printf("%X\n", unpack("Q", pack("d", -0.1)));
'
BFB999999999999A
  1. perl -V:nvsize提供8
  2. perl -V:uvsize提供8或更高