Avatar billede totalpc Seniormester
15. maj 2016 - 20:22 Der er 5 kommentarer

Forskel på om jeg regner med komma eller punktum

Hej

Jeg har lige opdaget at mit beregningsscrpt har en stor fejl. Der er forskel på om jeg sætter et tal ind i feltet $length angivet som 5,5 eller 5.5 Der kommer 2 helt forskellige resultater. Hvorfor hulen gør der det? Det kører på en wordpress side med insertphp. Hjælp?

[insert_php]
function beregn($length){
$beregn = ((($length * $length) + 3) * 1.36 );
Return $beregn;
}

$submit_value = $_POST['action'];
if(!empty($submit_value) && $submit_value == 'post'):

$hk = $_POST['hk'];
$length = $_POST['length'];
if(isset($_POST['action']) ):
if ($length <= 15):

IF ($length <=4 and $hk <= 25.84):

echo '<b><span style="color: green;">Du skal ikke have et speedbådsbevis for at sejle denne kombination af båd '.$length.' meter & motor '.$hk.' HK</span></b>
';
echo 'Da båden er 4 meter eller herunder og motorkraften er mindre end 25,84 er den ikke omfattet af lovgivningen omkring speedbådsbevis!';

else:
$res = beregn($length);
IF ($res < $hk):
echo '<b><span style="color: red;">Du skal have et speedbådsbevis for at sejle denne kombination af båd '.$length.' meter & motor '.$hk.' HK</span></b>
';

IF ($length <=4 and $hk <= 25.84):
echo '<b><span style="color: red;">Du skal under : 25,84 hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!</span></b>';
else:
echo '<b><span style="color: red;">Du skal under : '.$res.' hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!</span></b>';
Endif;

else:
echo '<b><span style="color: green;">Du skal ikke have et speedbådsbevis for at sejle denne kombination af båd ('.$length.' meter) & motor ('.$hk.' HK)</span></b>';

IF ($length <=4 and $hk > 25.84):
echo '<b><span style="color: red;"> Du skal under : '.$res.' hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!</span></b>';
else:
echo '<b><span style="color: green;"> Du skal over : '.$res.' hk på denne båd for at skulle have speedbådsbevis!</span></b>';
Endif;
Endif;
Endif;
Endif;

else:
echo '<b><span style="color: red;">Bådens længde skal være lig med eller under 15 meter!</span></b>';
Endif;
Endif;
Avatar billede olsensweb.dk Ekspert
15. maj 2016 - 20:39 #1
>Der er forskel på om jeg sætter et tal ind i feltet $length angivet som 5,5 eller 5.5
ja, programmering er amerikansk, dvs komma er tusinde seperator, og punktum er decimal seperator.
Avatar billede totalpc Seniormester
15. maj 2016 - 20:52 #2
Ja men kan jeg ikke på en eller anden måde sikre mig at alt indtastet bliver tolket korrekt?
Eller ændrer det noget hvis jeg sikrer regionale settings på webserveren? Den kører jeg selv
Avatar billede arne_v Ekspert
16. maj 2016 - 05:10 #3
Hvis du benytter den locale specifikke wrapper omkring floatval fra manualen http://php.net/manual/en/function.floatval.php, saa kan du udnytte locale.
Avatar billede totalpc Seniormester
16. maj 2016 - 11:55 #4
arne_v, jeg fandt et af dine tidligere svar og satte denne ind:

$length = str_replace(",",".",$length);

Så regner jeg med . hver gang uanset om de taster komma eller punktum ind. Så vidt jeg kan regne ud? Det giver i hvert fald det rigtige resultat nu uanset hvad jeg gør
Avatar billede arne_v Ekspert
16. maj 2016 - 19:55 #5
Det er den simple version.

Det den ikke haandterer er 1000 gruppering.

Eksempel med en million:

1.000.000,00
1,000,000.00

Men de bruges meget sjaeldent paa nettet og vel stort set aldrig af danskere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester