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