Hi Abu, This code works for me: #!/usr/bin/perl
my $d1, $d2, $sum; $d1 = 6.892964 * 10 ** -309; $d2 = 1.102874 * 10 ** -307; $sum = $d1 + $d2; printf("d1 = %e\n", $d1); printf("d2 = %e\n", $d2); printf("sum = %e\n", $sum); On Mon, Sep 20, 2010 at 1:30 PM, Abu Yoav <abuy...@gmail.com> wrote: > Hi, > > I wanted to port a small c program to perl. However, the two programs behave > differently with respect to very small "double" values. The behavior seems > like a bug to me, but since I'm very new to perl, I thought I might ask the > list first. > > Relevant code and output follows. Thanks! > > --- c code --- > #include<stdio.h> > > int main (int argc, char** argv) > { > double d1, d2, sum; > > d1 = 6.892964e-309; > d2 = 1.102874e-307; > > sum = d1 + d2; > > printf("d1 = %e\n", d1); > printf("d2 = %e\n", d2); > printf("sum = %e\n", sum); > > return 0; > } > > --- perl code --- > #!/usr/bin/perl > > my $d1, $d2, $sum; > > $d1 = "6.892964e-309"; > $d2 = "1.102874e-307"; > > $sum = $d1 + $d2; > > printf("d1 = %e\n", $d1); > printf("d2 = %e\n", $d2); > printf("sum = %e\n", $sum); > > --- c output --- > d1 = 6.892964e-309 > d2 = 1.102874e-307 > sum = 1.171804e-307 > > --- perl output --- > d1 = 0.000000e+00 > d2 = 1.000000e-307 > sum = 1.000000e-307 > -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/