Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Komma in plaats van punt als decimaalteken in cgi-script.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen,

Op 'n site gebruik ik 'n cgi-script voor een poll. Ik stel een vraag, gebruikers kunnen dan uit 4 mogelijke antwoorden kiezen. Script geeft dan de resultaten in %. Script doet ook nog allerlei andere dingen, maar dat is nu even niet relevant... Alles werkt al jaren goed.

Maar 't is mij al lang een doorn in het oog dat 't resultaat met een punt en niet met 'n komma wordt gepresenteerd. Dus bijv. 46.5% i.p.v. 46,5%. Logisch, want het is een Amerikaans script...

Het deel van de code dat verantwoordelijk is voor de presentatie van de resultaten staat hieronder.

<code>
for ($i=$numchoices-1; $i>=0; $i--) {
($num,$what) = split(/\|\|\|/,$processed[$i]);
$tmp = ($num/$mastertotal) * 100;
$tmp = sprintf("%3.2f",$tmp);
if ($graphical) {
$tmp2 = int($tmp);
print "<img src=\"$gr_file\" height=$gr_height width=$tmp2><br>";
}
print "<LI>$what ($tmp\%)\n";
</code>


Ik weet dat ik met <code>$tmp = sprintf("%3.2f",$tmp);</code> het aantal cijfers voor en achter decimale punt kan bepalen (in de code hierboven: 3 cijfers voor en 2 cijfers achter de punt). Maar hoe verander ik die punt in een komma? <code>%3.2f</code> veranderen in <code>%3,2f</code> werkt in ieder geval niet. Kan iemand mij verder helpen? Hartelijk dank.

Groet, Paul

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Misschien kun je deze link gebruiken om uit te vinden hoe je een . in een , zou kunnen veranderen:

http://www.htmlite.com/perl025c.php

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:38
Dat is Perl code, neem ik aan? De officiële methode is om de locale aan te passen. Zie man perllocale.

Voorbeeldje:
Perl:
1
2
3
4
use POSIX qw(setlocale LC_NUMERIC);
use locale;
setlocale(LC_NUMERIC, '');
printf("pi=%f\n", 3.141592653589793);

env LC_ALL=nl_NL.utf8 perl test.pl
pi=3,141593

Je kunt ook de locale hardcoden in de call naar setlocale; dan hoef je 'm niet in de environment in te stellen.

Verwijderd

Topicstarter
Hartelijk bedankt voor beide reacties...

Ja, het gaat inderdaad om een *.pl (perl) file.

Helaas kom ik, door mijn zeer beperkte kennis van zaken, er niet echt uit. <code>$tmp =~ s/./,/;<code> en variaties daarop geven niet het gewenste resultaat. Weet iemand wellicht wat de precieze code is die ik moet invoegen? Vr.gr. Paul.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:38
Op GoT is het gebruikelijk dat je ook zelf actief meeprogrammeert. Probeer dus eerst te leren hoe Perl werkt, en als je die oplossing wil gebruiken, hoe reguliere expressies werken. Hint: de punt heeft een speciale betekenis in regex patterns, dus je zult 'm wellich moeten escapen.