my $pi = "3.1415"; my $substr = substr $pi, 0, 4; print "\substring: ".$substr."\n"; # $substr: 1.14 #### #!/usr/bin/perl use bignum; use strict; use warnings; use Math::BigFloat; sub math { my $pi = "3.1415"; my $substr = substr $pi, 0, 4; print "\$substr: ".$substr."\n"; my $N = Math::BigFloat->new($pi); print "\$N: ".$N."\n"; my $round = $N->copy()->ffround(-3); print "\$round:" .$round. "\n"; } math(); sub alternative { my $x = 2 + 4.5; # BigFloat 6.5 print "My \$x: ".$x."\n"; print 2 ** 512 * 0.1,"\n"; # really is what you think it is print inf * inf,"\n"; # prints inf print NaN * 3,"\n"; # prints NaN { no bignum; print 2 ** 256 * 0.1,"\n"; # a normal Perl scalar now } } alternative(); __END__ $substr: 3.14 $N: 3.1415 $round:3.142 My $x: 6.5 1340780792994259709957402499820584612747936582059239337772356144372176403007354697680187429816690342769003185818648605085375388281194656994643364900608409.6 inf NaN 1.15792089237316e+76