Java 的 Double.doubleToLongBits() 的 perl 是什么?
What is the perl equivalent to Java's Double.doubleToLongBits()?
我有两个浮点数,我想计算它们在末位单位 (ULP) 上的差异。在 Java 中是:
Double.doubleToLongBits(a) - Double.doubleToLongBits(b)
Perl 中的等价物是什么?
在具有双精度浮点数[1]和大小至少为 64 位的无符号整数的 Perl 上[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
或更高
我有两个浮点数,我想计算它们在末位单位 (ULP) 上的差异。在 Java 中是:
Double.doubleToLongBits(a) - Double.doubleToLongBits(b)
Perl 中的等价物是什么?
在具有双精度浮点数[1]和大小至少为 64 位的无符号整数的 Perl 上[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
或更高