m. *_*khm 7 floating-point perl
为了确保我的计算对于所有情况都是正确的,我希望将结果(双精度数)看作十六进制或二进制字符串.如何获取十六进制/二进制字符串或此数字的字节表示Perl
?在Java
,我可以使用,例如,
double d = performMyCalculations();
System.out.format("%x\n", Double.doubleToLongBits(d));
Run Code Online (Sandbox Code Playgroud)
为了这个目的,它会打印出3fc3333333333333
的0.15
.我怎样才能得到类似的结果Perl
?
Perl的pack()和unpack()函数允许您来回转换二进制表示.
my $double_bits = unpack "Q", pack "d", 0.15;
printf "%x\n", $double_bits;
# Output: 3fc3333333333333
Run Code Online (Sandbox Code Playgroud)
该pack "d"
包双作为其二进制表示.与unpack "Q"
我们解开这个位模式为一个无符号的64位整数.所以这会将double的位模式重新解释/转换为整数,然后我们可以用十六进制数字输出.
Perl还有一个格式化选项来显示十六进制浮点数:
printf "%a\n", 0.15;
# Output: 0x1.3333333333333p-3
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
627 次 |
最近记录: |