Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/01/2011, 11h56   #1
Membre confirmé
 
Inscription : mars 2004
Messages : 388
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 388
Points : 287
Points : 287
Envoyer un message via MSN à ricky78
Par défaut erreur avec math.pow

Bonjour

Pour commencer soyer indulgent je suis un pur newbie en javascript.

Mon problème et le suivant, j'ai besoin de créer un petit outil pour convertir des dBm en µTesla. Je me suis dit qu'un petit gadget window me permettrait de l'avoir en direct sur mon bureau.
J'ai donc commencer à)voir comment créer un gadget, qui sont en fait du html et des javascript .

En continuant je veux donc intégrer la formule µT = 4 * PI * Math.pow(10.0, ((dbm + 36)/20)) ;


Je fait donc mon petit code et en testant mes valeurs sont complètement erronés.
En debuggant il s’avère que dbm peut varier en général de 0 à -50.

Quand je met 0, le Math.pow(10.0, ((dbm + 36)/20)) renvoie bien 63.095...
par contre quand je met -50 le power me renvoie 1.584893192461072e-252 alors que cela devrait être 1e-14 et la je comprend pas mon erreur.

Cordialement
ricky78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 12h13   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type='text/javascript'>
function bar(){
var dbm=1
while(--dbm > -50){
document.body.appendChild(document.createTextNode(dbm +" => " +Math.PI * Math.pow(10.0, ((dbm + 36)/20))	))
document.body.appendChild(document.createElement('br'))
 
}
}
	</script>
</head>
<body onload="bar()">
</body>
 
</html>
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 12h54   #3
Membre confirmé
 
Inscription : mars 2004
Messages : 388
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 388
Points : 287
Points : 287
Envoyer un message via MSN à ricky78
bonjour

Je crois pas bien comprendre ta réponse.
J'ai l'impression que tu calcule 50 itération avec le while n'est pas.

Mon problème et que pour une valeur, si dbm = 0, le math.pow renvoie une valeur bonne mais que si dbm =-50 le math .pow est erroné

Cordialement
ricky78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 13h15   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
pour moi ce n'est pas le pow qui pose souci

hormis peut être pour -30 pour lequel je ne m'explique pas l'arrondi

mais pour les autres pas de souci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<script type='text/javascript'>
function bar(){
var dbm=5
while(--dbm > -51){
document.body.appendChild(document.createTextNode(dbm +" => "+ Math.pow(10.0, dbm)))
document.body.appendChild(document.createElement('br'))
 
}
}
	</script>
</head>
<body onload="bar()">
</body>
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 13h41   #5
Membre confirmé
 
Inscription : mars 2004
Messages : 388
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 388
Points : 287
Points : 287
Envoyer un message via MSN à ricky78
Merci!

C’était un problème de parenthèse.

Cordialement
ricky78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 14h00   #6
Membre confirmé
 
Inscription : mars 2004
Messages : 388
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 388
Points : 287
Points : 287
Envoyer un message via MSN à ricky78
alors la je comprend plus.

Ca marche pour les valeurs positives et pas pour les negatives??

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
<html>
<head>
<title>
DBm Converter
</title>
<script type="text/javascript">
	<!--
	function convert()
	{
		if (document.getElementById)
		{
				var db = document.getElementById('dbmid').value;
				var But = document.getElementById('utid');
				var ut = 4.0 * Math.PI * Math.pow(10.0, ((db + 36)/20));	
				res = (Math.round (ut *100))/100;		
				But.value=res;
		}	
	}	
	function bar()
	{
		var dbm=1
		while(--dbm > -50)
		{
			document.body.appendChild(document.createTextNode(dbm +" => " + 4.0 * Math.PI * Math.pow(10.0, ((dbm + 36)/20))	))
			document.body.appendChild(document.createElement('br'))
 
		}
	}
	//-->
</script>
</head>
<body onload="bar()">
DBm: <input type="text" name="dbmid" value="" /><br />
µT:  <input type="text" name="utid" value="" /><br />
<input type="submit" value="Convert" onClick="convert()" />
</body>
</html>
ricky78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 20h41   #7
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
question de néophyte, est tu sur de la formule de conversion?
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 21h01   #8
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Citation:
Envoyé par NoSmoking
question de néophyte, est tu sur de la formule de conversion?
je penses que oui
Citation:
Envoyé par ricky78
alors la je comprend plus.

Ca marche pour les valeurs positives et pas pour les negatives??
essaies
Code :
var db = parseFloat(document.getElementById('dbmid').value);
ou
Code :
var db = 1.0*(document.getElementById('dbmid').value);
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2011, 20h51   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Citation:
Envoyé par ricky78
Quand je met 0, le Math.pow(10.0, ((dbm + 36)/20)) renvoie bien 63.095...
par contre quand je met -50 le power me renvoie 1.584893192461072e-252 alors que cela devrait être 1e-14 et la je comprend pas mon erreur.
Ben... ton erreur, elle vient du fait qu'avec -50, on a :
  • -50 + 36 = -14
  • -14 / 20 = -0.7
  • 10^-0.7 = 0,19952623149688796013524553967395
On est loin des valeurs dont tu parles
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h46.


 
 
 
 
Partenaires

Hébergement Web