JavaScript témák.

JavaScript matematika példák


=

XHTML fájl tartalma

<body>
<form name="matematika">
<table class="tabla">
<tr><td>

<input type=text size=12 value=8 name="a">
 
<input type="button" 
value="  +  " onClick="a_plus_b(this.form)">

<input type="button" value=" - " onClick="a_minus_b(this.form)">

<input type="button" value=" x " onClick="a_szor_b(this.form)">

<input type="button" value=" / " onClick="a_osztva_b(this.form)">

<input type="button" value=" ^ " onClick="a_pow_b(this.form)">

<input type="number" size=12 value=2 name="b"> = <input type "number" value=0 name="eredmeny" size=29>
</td></tr> </table> </form> </body>

JavaScript fájl tartalma


function a_plus_b(form) 	
{	a=eval(form.a.value)	
	b=eval(form.b.value)	
	x=a+b			
	form.eredmeny.value = x	
}				
function a_minus_b(form)	 
{	a=eval(form.a.value)	
	b=eval(form.b.value)	
	x=a-b			
	form.eredmeny.value=x	
}				
function a_szor_b(form)	 
{	a=eval(form.a.value)	
	b=eval(form.b.value)	
	x=a*b		
	form.eredmeny.value=x	
}				
function a_osztva_b(form)		 
{	a=eval(form.a.value)	
	b=eval(form.b.value)	
	x=a/b		
	form.eredmeny.value = x	
}				
function a_pow_b(form) 	
{	a=eval(form.a.value)	
	b=eval(form.b.value)	
	x=Math.pow(a, b)	
	form.eredmeny.value = x	
}

				
//Megjegyzés:
//pow= beépített matematikai függvény, 
//azaz felső index. 
//Angolul= Math.pow 






Meghatározások értelmezés:

input
type=text : karakterek beírására szolgáló ablak, melybe, írhatunk betűt vagy számot. Jelen esetben, csak számokat, mert a JavaScript fájl így lett megírva.
size=12 : Mennyi karakter jeleníthető meg az ablakban. Írhatunk többet is, de az nem lesz látható
value=8 : Az ablakban, kezdetkor megjelenő karakter, jelen esetben 8.
name="a" : Az "a" = ezen input ablakába beírt értékkel, melyet a (js) fájl dolgoz fel

input
type="button": Elküldő gomb. Egy billentyű, azaz gombformájú ablakot jelenít meg.
value=" + " : Az elküldő gombon, milyen felírat vagy karakterjel jelenjen meg, melyet az idézőjelek közé kell beírnunk. A megjelenő gomb szélességét megváltoztathatjuk, a beírt karakter és az idézőjelek közötti távolság megnövelésével (szóközbillentyű többszöri lenyomásával)
onClick="a_plus_b(this.form)" : Művelet végrehajtása, ha az egérrel rákattintunk. A JávaScript fájlban megírt programok közül, az hjtódjon végre, melynek azonosítója megegyezik az itt beírt azonosítóval. (a_plus_b )

input
type="number": Numerikus számok beírására szolgáló ablak. Szöveget, és Római számokat nem fogad el, azaz a műveletet nem hajtja végre.
size=12 : Mennyi karakter jeleníthető meg, az ablakban. Írhatunk többet is, de az nem lesz látható.
value=2 : Az ablakban, kezdetkor megjelenő karakter, jelen esetben 2.
name="b" : Az "b" egyenlő, ezen input ablakába beírt értékkel, melyet a (js) fájl dolgoz fel

input
type "number" : Numerikus számok beírására, megjelenítésére, szolgáló ablak. Jelen esetben, megjelenítési funkciója van.
value=0 : Az ablakban, kezdetkor megjelenő karakter, jelen esetben 0.
name="eredmeny" : A JavaScript által kiszámított értéket jeleníti meg. Az eredmény szó, egy azonosítót jelent, melynek meg kell egyezni a (js) fájlban beírt azonosítóval ( Tetszőleges azonosítót alkalmazhatunk, az eredmény szó helyett)
size=29 : Mennyi karakter jeleníthető meg, az ablakban.




JavaScript matematikai hibák.

   0.123 * 0.3 = 0.0369         JavaScript eredménye = 0.036899999999999995
   Javítás:
   JavaScript eredményét felszorozzuk 10 000-el, majd  Math.ceil(eredmeny);  meghatározással kerekíttünk,
   a kapott értéket visszaosztjuk  10 000-el, és megkapjuk a pontos értéket.

JavaScript az egész-számoknál, 99,99%-ban jól dolgozik.
De, mem mindig kapunk, pontos eredményt.
Például szorzásnál:
10-el, 1000-el; 10 000-el, jó eredményeket ad.
100-al, 100 000-el, nem mindig ad, pontos eredményt.

Szorzó = 10 (Tíz) Szorzó = 100 (Száz) Szorzó = 1000 (Ezer)
11 * 10 = 110;
12 * 10 = 120;
23 * 10 = 230;
83 * 10 = 830;
93 * 10 = 930;
1.1 * 10 = 11;
1.2 * 10 = 12;
2.3 * 10 = 23;
8.3 * 10 = 83;
8.4 * 10 = 84;
9.3 * 10 = 93;
9.4 * 10 = 94;
-93 * 10 = -930;
-1.1 * 10 = -11;
-1.2 * 10 = -12;
-2.3 * 10 = -23;
11 * 100 = 1100;
12 * 100 = 1200;
23 * 100 = 2300;
83 * 100 = 8300;
93 * 100 = 9300;
1.1 * 100 = 110.00000000000001;
1.2 * 100 = 120;
2.3 * 100 = 229.99999999999997;
8.3 * 100 = 830.0000000000001;
8.4 * 100 = 840;
9.3 * 100 = 930.0000000000001;
9.4 * 100 = 940;
-93 * 100 = -9300;
-1.1 * 100 = -110.00000000000001;
-1.2 * 100 = -120;
-2.3 * 100 = -229.99999999999997;
11 * 1000 = 11000;
12 * 1000 = 12000;
23 * 1000 = 23000;
83 * 1000 = 83000;
93 * 1000 = 93000;
1.1 * 1000 = 1100;
1.2 * 1000 = 1200;
2.3 * 1000 = 2300;
8.3 * 1000 = 8300;
8.4 * 1000 = 8400;
9.3 * 1000 = 9300;
9.4 * 1000 = 9400;
-93 * 1000 = -93000;
-1.1 * 1000 = -1100;
-1.2 * 1000 = -1200;
-2.3 * 1000 = -2300;


Vissza oldal elejére.


Jó eredményeket kapjunk.
a következő programunkkal kijavíthatjuk.

Minden érték, egészszám legyen.
A következő tömb adatai, max 1 db. tizedest tartalmaznak,
mindegyik tömbelem adata egész szám legyen, mínimum 10-el szorzunk.
De, szorozhatunk: 100-al; 1000-el; 10 000-el; 100 000-el; 1 000 000-val;

<script>

var tomb = new Array();
tomb[0]=11;
tomb[1]=12;
tomb[2]=23;
tomb[3]=83;
tomb[4]=93;
tomb[5]=1.1;
tomb[6]=1.2;
tomb[7]=2.3;
tomb[8]=8.3;
tomb[9]=8.4;
tomb[10]=9.3;
tomb[11]=9.4;
   var tombhossza=tomb.length;
   
var keplet=10;                // Szorzószám meghatározása.

for(i=0; i < tombhossza; i++) {
       var  tadat=tomb[i];                     // Lekérdezett tömbelem adata.
       var  szorzo=keplet;	   
       var  ertek=tadat*szorzo;            // Tömbelem adatának szorzása.
	   
	   KorrektFunction(tadat, szorzo, ertek);   // function meghívása, paraméter átadással.
}

// ----- function  alkalmazható, pozítív/negatív egész és tizedes számokhoz.---------------------

function KorrektFunction(tadat, szorzo, ertek) {
var Mn ="-";                                           // A mínusz beazonosításhoz
var xstr = ertek.toString();                     // Számsor, string-re alakítása.
var xstrh = ertek.toString().length;        // Számsor hossza, ennyi számot tartalmaz.
var xstr1=xstr.charAt(0);                        // Számsor, első értéke. (Lehet mínusz "-" is.)
var tppoz=xstr.indexOf(".");                   // Tizedepont pozíciója. Nincs pont, akkor értéke = -1;
var tpue=xstr.charAt(tppoz+1);              // Tizedepont utáni, első érték.
var tput=xstr.substring(tppoz,xstrh-1);     
var tputh=tput.length;                            // Tizedesek darabszáma.


    if(xstr1 == Mn && tpue==0) { ertek = Math.ceil(ertek); }
    if(xstr1 == Mn && tpue==9) { ertek = Math.ceil(ertek)-1; }
	
    if(xstr1 != Mn && tpue==0) { ertek = Math.ceil(ertek)-1; }
    if(xstr1 != Mn && tpue==9) { ertek = Math.ceil(ertek); }
	
	var adat=tadat+' * '+szorzo+' = '+ertek+';<br>';
         document.write(adat);
}

</script>



Vissza oldal elejére.