我有两个浮点数,我想计算它们在最后位置(ULP)中的单位差异。在Java中,这是:
Double.doubleToLongBits(a) - Double.doubleToLongBits(b)
Perl中的等价物是什么?
答案 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
perl -V:nvsize
提供8
perl -V:uvsize
提供8
或更高