On my CentOS 7 box with perl-5.16.3
$ perl -E'say sprintf("%.100g", 0.15)'
0.14999999999999999
$ perl -E'say sprintf("%.100f", 0.15)'
0.14999999999999999444888487687421729788184165954589843750000000000000
+00000000000000000000000000000000
$ perl --version | head -3
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-li
+nux-thread-multi
(with 40 registered patches, see perl -V for more detail)
On my Fedora 32 box with perl-5.30.3
$ perl -E'say sprintf("%.100g", 0.15)'
0.1499999999999999944488848768742172978818416595458984375
$ perl -E'say sprintf("%.100f", 0.15)'
0.14999999999999999444888487687421729788184165954589843750000000000000
+00000000000000000000000000000000
$ perl -E'say sprintf("%.100a", 0.15)'
0x1.333333333333300000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000p-3
$ perl -v|head -3
This is perl 5, version 30, subversion 3 (v5.30.3) built for x86_64-li
+nux-thread-multi
(with 96 registered patches, see perl -V for more detail)