$ perl -E'say sprintf("%.100g", 0.15)' 0.14999999999999999 $ perl -E'say sprintf("%.100f", 0.15)' 0.1499999999999999944488848768742172978818416595458984375000000000000000000000000000000000000000000000 $ perl --version | head -3 This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi (with 40 registered patches, see perl -V for more detail) #### $ perl -E'say sprintf("%.100g", 0.15)' 0.1499999999999999944488848768742172978818416595458984375 $ perl -E'say sprintf("%.100f", 0.15)' 0.1499999999999999944488848768742172978818416595458984375000000000000000000000000000000000000000000000 $ perl -E'say sprintf("%.100a", 0.15)' 0x1.3333333333333000000000000000000000000000000000000000000000000000000000000000000000000000000000000000p-3 $ perl -v|head -3 This is perl 5, version 30, subversion 3 (v5.30.3) built for x86_64-linux-thread-multi (with 96 registered patches, see perl -V for more detail)