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/


Reply via email to