Ich habe einige Arrays, die Zahlen für eine Multiplikation Quiz halten. Hier sind einige Beispiele:Falsche Berechnung mit Dezimalstellen in PHP
if($level==8){
$first=array(13,14,16,17,18,19);
$second=array(9,10,11,12,13,14,15,16,17,18,19);}
if($level==9){
$first=array(23,19,46,87,98,39);
$second=array(19,10,111,112,139,178,145,166,167,185,192);}
if($level>9){
$first=array(2.3,1.9,4.6,8.7,9.8,3.9);
$second=array(1.9,10,11.1,11.2,13.9,17.8,14.5,16.6,16.7,18.5,19.2);}
Diese Zahlen verwendet werden, einige Antworten zu berechnen, die auf Knopfdruck gesetzt werden und der Benutzer muss auf die richtige Antwort klicken.
// the correct answer
$b=rand(0,5);
$c=rand(0,10);
$f=$first[$b];
$s=$second[$c];
$d=$f*$s;
// wrong answer no. 1
$w1a=rand(0,5);
$w1b=rand(0,10);
$w1c=$first[$w1a];
$w1d=$second[$w1b];
$w1e=$w1c*$w1d;
if ($w1e==$d){
wronganswer1();
}
// wrong answer no. 2
$w2a=rand(0,5);
$w2b=rand(0,10);
$w2c=$first[$w2a];
$w2d=$second[$w2b];
$w2e=$w2c*$w2d;
if ($w2e==$d){
wronganswer2();
}
Es ist eine Prüfung auf der Empfangsseite der Entsenderichtlinie, um zu sehen, ob der Benutzer tatsächlich die richtige Antwort bekommen hat:
$b=$_POST["b"];
$c=$_POST["c"];
$subby=$_POST["sub"];
$d=$c * $b;
$score=$_SESSION["score"];
?>
</head>
<body>
<?php
if ($subby==$d){
echo "<script>correct.play()</script>";}
else{
echo "<script>wrong.play()</script>";
}
?>
<?php
if ($subby==$d) {
echo "Well done!";
$_SESSION["score"]=$_SESSION["score"]+1;
echo "<h3>The button you pressed said: ".$subby;
echo "</h3><br><h2>";
echo $b."x".$c."=".$subby;
echo "</h2><br>";
echo "<h3>Your streak is worth ".$_SESSION["score"];
}
else {
echo "<h1>No!<br>";
$_SESSION["score"]=0;
echo $b."x".$c."=".$d;
echo "<br>";
echo "Your streak has been reset to 0!</h1>";
}
Nun, wenn ich ganze Zahlen habe: kein Problem. Aber die Dezimalstellen verursachen ein Problem. Mein Code sagt dem Spieler, dass eine korrekte Berechnung falsch ist!
Ich habe einige Zeit Echo aus einfachen dezimal Multiplikationen ausgegeben und die Ausgabe korrekt ist (also keine Abschneide der Dezimalstellen oder ähnliches) ...
Warum die Ungenauigkeit?
Sind die Antworten mit '.' oder', 'von Benutzern? – JustOnUnderMillions
Hallo @JustOnUnderMillions - Benutzer geben nichts ein, die Antwort wird ihnen auf der Schaltfläche präsentiert. – stilts77