Leser: 19
printf ("%23.16e\n", $a);
2010-11-11T09:37:23 SannyIch benutze folgende Form der printf Funktion:
Code (perl): (dl )printf ("%23.16e\n", $a);
Ist das übergebene Argument beispielsweise $a=-666 dann erfolgt die Ausgabe folgendermaßen:
-6.6600000000000000e+02
Mein Ziel ist, dass die Darstellung folgendermaßen aussieht:
...
-0.6660000000000000D+03
Mir fällt nur ein, die komplette Datei nochmal einzulesen und das gewünschte Format durch eine relativ aufwendige Substitution einzustellen/ erzwingen.
Hat jemand von euch eine elegantere Idee?
printf("%s",my_d_format($a));
1 2 3 4 5 6 7 8 9 10
#!/usr/bin/perl use strict; use warnings; my $x = -666; my $y = sprintf("%23.16e\n", $x); # -6.6600000000000000e+02 if ($y =~ m/^(.+)e\+(\d+)$/) { printf("%23.16fD+%02d\n", $1/10, $2+1); # -0.6660000000000000D+03 }
1 2 3 4 5 6 7 8
use 5.012; use POSIX qw(log10 ceil); my $x = -666; my $e = ceil(log10(abs($x))); my $m = $x / 10**$e; printf "%19.16fD%+03d\n", $m, $e;