problème d'opération arithmétique - HTML/CSS - Programmation
Marsh Posté le 03-12-2006 à 21:30:41
N'oublie pas qu'une machine compte en binaire et les conversions en décimal peuvent être parfois un peu déroutantes.
Le cas est fréquent sur les paniers de sites de vente en ligne lors que l'on manipule des quantités importantes de produits ayant un prix unitaire à deux ou trois décimales, multiplié par un taux de TVA à trois décimal aussi.
Si c'est pour tracer une courbe, tu ne verras pas la différence entre 20.599999999999998 et 20,60
Marsh Posté le 03-12-2006 à 22:21:49
La solution consiste peut-être à arrondir avec x = Math.round(x * 10) / 10
Marsh Posté le 04-12-2006 à 09:38:31
merci pour vos réponses.
olivthill je pense que je vais faire comme tu dis. Et puis au lieu d'augmenter x par rapport à sa valeur de juste avant, je vais l'augmenter par rapport à celle d'origine, de n fois le pas, ce sera plus précis.
gebruik, en effet au niveau de la courbe ça ne change rien. Quoique, j'ai souvent des anomalies de reliage des points qui apparaissent sans raison :
Mais cela m'embétait surtout au niveau du tableau des valeurs, comme les x sont faussés, les y aussi.
Marsh Posté le 06-12-2006 à 15:22:27
problème résolu, ainsi que les "vides" dans le reliage des points. Reste encore quelques anomalies de courbe qui déborde de l'axe des ordonnées (notamment aux asymptotes verticales).
c'est marrant les courbes qu'on peut obtenir en maniant les arrondis, les min et max etc..
Marsh Posté le 07-12-2006 à 19:11:41
je m'en serais douté..
je sais qu'il n'est pas vraiment fait pour un usage autre que l'agrémentation des pages web. Mais c'est le seul langage que je connaisse assez bien.
Marsh Posté le 03-12-2006 à 19:55:16
bonjour,
je programme une calculatrice graphique en javascript, et je rencontre un problème énervant : lorsque j'augmente la valeur de x avec un pas numérique de la forme 1/(2^n) et ses multiples (par exemple : 1, 0.5, 0.25, 0.75, 0.125, etc), tout va bien, mais dès que le pas ne vérifie pas cette condition, j'obtient à partir de la 3ème opération un résultat bizarre avec un chiffre qui se balade tout seul à la 15ème place derrière la virgule
par exemple avec ce script :
<script language="JavaScript">
var x=20
for(i=0;i<5;i++) {
x+=0.2
}
document.write(x)
</script>
j'obtient ceci : 20.599999999999998
alors qu'avec celui-ci :
<script language="JavaScript">
var x=20
for(i=0;i<5;i++) {
x+=0.25
}
document.write(x)
</script>
j'obtient bien 21.25.
savez-vous comment résoudre ce problème ?
merci