I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Det er meget almindeligt at en computer regner forkert, når man har at gøre med rigtigt mange decimaler. Prøv om det hjælper at afrunde dit resultat med fx:
var result = Math.round(eval(temp)*100)/100
Herved får du et resultat med to decimalers nøjagtighed. Note: jeg har ikke testet ovenstående, men det burde virke:)
Hvis du blot afrunder resultatet, får du højst sandsynligt et resultat der hedder 384.59 (hvilket vist ikke er som ønsket.) Du bliver nok nød til at afrunde noget oftere .. Koden er desuden enormt redundant (- nu ved jeg ikke hvad beregningen skal bruges til, men hvad gør du hvis du finder ud af, at de enkelte felters værdier skal være over 10 og ikke 0 som i din nuværende kode? Så skal du til at rette rigtig meget kode ..)
Prøv eventuelt med noget i retningen af: <script> function beregn() { var fields = new Array( new Array(document.formular.bil1.value, 34.4), new Array(document.formular.bil2.value, 68.8), new Array(document.formular.bil3.value, 56.45), new Array(document.formular.bil4.value, 112.9) );
var pris = 0; for(var i = 0; i < fields.length; i++) if (fields[i][0] > 0) pris += Math.round(fields[i][0] * fields[i][1] * 100)/100; document.formular.resultat.value = Math.round(eval(pris) * 100)/100; } beregn(); </script>
Hvad gør eval i jeres forslag (og det oprindelige spm)? Det er JavaScripts dårligst performende funktion, så den bør absolut ikke anvendes uden grund ... som her ;o)
Derudover er det nicklasb's forslag, der give mening. Priser skal rundes af til to decimaler, før de lægges sammen =)
Jeg ved ikke hvorfor han kører eval og har kun taget det med i et lidt for groft copy'n'paste. Men nej - kan ikke umiddelbart set nogen god grund til det ..
Hej niclasb, jeg har forsøgt mig lidt med din kode og er kommet frem til følgende;
<script language="JavaScript"> function beregn() { var fields = new Array( new Array(document.formular.bil1.value, 34.4), new Array(document.formular.bil2.value, 68.8), new Array(document.formular.bil3.value, 56.45), new Array(document.formular.bil4.value, 112.9), new Array(document.formular.pers1.value, 12.20), new Array(document.formular.pers2.value, 24.4), new Array(document.formular.pers3.value, 6.10), new Array(document.formular.pers4.value, 12.20), new Array(document.formular.pers5.value, 6.10), new Array(document.formular.pers6.value, 12.20), new Array(document.formular.pers7.value, 0), new Array(document.formular.pers8.value, 0), new Array(document.formular.trailer1.value, 17.85), new Array(document.formular.trailer2.value, 35.70), new Array(document.formular.trailer3.value, 33.60), new Array(document.formular.trailer4.value, 67.20), new Array(document.formular.trailer5.value, 45.10), new Array(document.formular.trailer6.value, 90.20), new Array(document.formular.mcyc1.value, 17.40), new Array(document.formular.mcyc2.value, 34.80)
);
var pris = 0; for(var i = 0; i < fields.length; i++) if (fields[i][0] > 0) pris += Math.round(fields[i][0] * fields[i][1] * 100)/100; document.formular.resultat.value = Math.round(eval(pris) * 100)/100; } beregn(); </script>
Men det giver mig en fejl i kørsel af scriptet, Fejl: document.formular has no properties
det er i denne linie, new Array(document.formular.bil1.value, 34.4),
Det er fordi du kalder metoden beregn() inden fomularen er defineret. Hvis det er nødvendigt at kalde funktionen før brugeren indtaster data, kan du rykke det ned under formularen. Altså slette den i linje 134 og flytte den ned i bunden af siden ..
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.