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

Reply via email to