in reply to What does this print for you?

The difference is tiny, numerically speaking. Specifically, it's a variation in the second least significant bit.

Merry Ch 684320797272654D = 1.320797272654D * 2**645 Kerry Ch 684320797272654B = 1.320797272654B * 2**645 ristmas! 2173616D74736972 = 1.3616D74736972 * 2**(-488) tistmas! 2173616D74736974 = 1.3616D74736974 * 2**(-488)
use strict; use warnings; sub d { my $n = unpack 'B*', shift; my $s = substr($n, 0, 1, '') ? '-' : ''; my $e = oct('0b' . substr($n, 0, 11, '')); (my $m = $n) =~ s/(.{4})/uc unpack 'H', pack 'B4', $1/eg; if ($e == 0) { return "denormal ($m)" if $m =~ /[^0]/; return $s . '0'; } elsif ($e == 0x7FF) { return "NaN ($m)" if $m =~ /[^0]/; return $s . 'inf'; } $e -= 0x3FF; return $s . '1.' . $m . ' * 2**' . ($e < 0 ? "($e)" : $e); } my $line = 0; for ( 'Merry Ch', 'Kerry Ch', 'ristmas!', 'tistmas!', ) { print("\n") if $line && $line % 2 == 0; ++$line; # This program requires a little-endian machine. my $pd = reverse $_; printf("%s %s = %s\n", $_, uc(unpack('H*', $pd)), d($pd), ); }