[...] Retourner la valeur exacte d'un nombre
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
- Niveau 3
- Messages : 47
- Enregistré le : mer. 07 janv. 2015 18:58
- Status : Hors ligne
[...] Retourner la valeur exacte d'un nombre
Bonjour,
J'aimerais obtenir la valeur exacte d'un résultat (forme fractionnaire par exemple) et non sa valeur décimale approchée, lors d'un calcul.
Par exemple, si je dis :
$result = (-8) / (11/2)
msgbox (0,"",$result)
J'obtiens une valeur approchée décimale avec plein de chiffres après la virgule...
Merci de votre aide.
J'aimerais obtenir la valeur exacte d'un résultat (forme fractionnaire par exemple) et non sa valeur décimale approchée, lors d'un calcul.
Par exemple, si je dis :
$result = (-8) / (11/2)
msgbox (0,"",$result)
J'obtiens une valeur approchée décimale avec plein de chiffres après la virgule...
Merci de votre aide.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [...]retourner la valeur exacte d'un nombre
C'est quoi plein de chiffres ?
10, 50, 500, 50000, 50000000000 ?
Si vous déterminez un nombre de décimales après la virgule (50 par exemple) le résultat de certaines divisions seront forcément approchées ...
Envoyé de mon appareil mobile avec Tapatalk.
10, 50, 500, 50000, 50000000000 ?
Si vous déterminez un nombre de décimales après la virgule (50 par exemple) le résultat de certaines divisions seront forcément approchées ...
Envoyé de mon appareil mobile avec Tapatalk.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 3
- Messages : 47
- Enregistré le : mer. 07 janv. 2015 18:58
- Status : Hors ligne
Re: [...] Retourner la valeur exacte d'un nombre
J'ai bien dit plein de chiffres après la virgule... par exemple, 1,455852585452
Mais je n'aimerais pas une valeur approchée, mais la valeur exacte !
Mais je n'aimerais pas une valeur approchée, mais la valeur exacte !
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : En ligne
Re: [...] Retourner la valeur exacte d'un nombre
Valeur exacte = une infinité de chiffre après la virgule, et je doute que vous possédiez une infinité de RAM pour stocker tout ça
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Re: [...] Retourner la valeur exacte d'un nombre
Si tu veux la valeur exact il faut toujours avoir le résultat sous le forme d'une fraction, si je me rappelle mes vieux cours de maths pour diviser un nombre "a" par un nombre "b" il suffit de multiplier le nombre "a" par l'inverse d'un nombre "b" donc dans ton exemple
-8 * (2/11)
MsgBox(0,"","-16/11")
Puis d'afficher ça dans une MsgBox par exemple mais bon ça n'est plus vraiment du calcul c'est simplement de la mise en forme de chaine de caractère... Après il est possible de simplifier la fraction si c'est ce que tu cherches mais je ne suis pas sur de comprendre.
-8 * (2/11)
MsgBox(0,"","-16/11")
Puis d'afficher ça dans une MsgBox par exemple mais bon ça n'est plus vraiment du calcul c'est simplement de la mise en forme de chaine de caractère... Après il est possible de simplifier la fraction si c'est ce que tu cherches mais je ne suis pas sur de comprendre.
Re: [...] Retourner la valeur exacte d'un nombre
Bonjour,
CDBarbu est dans le vrai, soit on pose le résultat sous forme de fraction, soit on bloque à un certain nombre de chiffre après la virgule car après tout pour être précis et reprendre l'exemple de Wikipedia
CDBarbu est dans le vrai, soit on pose le résultat sous forme de fraction, soit on bloque à un certain nombre de chiffre après la virgule car après tout pour être précis et reprendre l'exemple de Wikipedia
Wikipedia a écrit :Exemple : exactement 12 revient à écrire 12,000000000000000000000000000000…
Y01
-
- Niveau 3
- Messages : 47
- Enregistré le : mer. 07 janv. 2015 18:58
- Status : Hors ligne
Re: [...] Retourner la valeur exacte d'un nombre
TommyDDR, tu sais ce que c'est qu'une valeur exacte ?? je n'en ai pas l'impression... En effet une fraction ferait très bien l'affaire, mais en entrée il y a des nombres naturels.
J'aimerais que de lui même, le programme me donne des valeurs exactes, par exemple une fraction, car par défault il arrondit.
J'aimerais que de lui même, le programme me donne des valeurs exactes, par exemple une fraction, car par défault il arrondit.
- jbnh
- Niveau 11
- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [...] Retourner la valeur exacte d'un nombre
Code : Tout sélectionner
$n = 28
$d = 44
$f = $n / $d
$a = D2F($f)
If @error Then Exit
MsgBox(0, $f, $a[0] & @CRLF & $a[1]);
Func D2F( $dec )
If IsInt($dec) Then
SetError(1)
Return ""
EndIf
Local $i = 1, $bNeg = ($dec < 0), $f[2]
If $bNeg Then $dec *= -1
Do
$i += 1
$f[0] = $dec * $i
Until IsInt($f[0])
If $bNeg Then $f[0] *= -1
$f[1] = $i
Return $f
EndFunc
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
- blacksoul305
- Membre émérite
- Messages : 957
- Enregistré le : ven. 18 mars 2011 11:49
- Localisation : Au pays des programmeurs.
- Status : Hors ligne
Re: [...] Retourner la valeur exacte d'un nombre
Bonsoir,
je suis certain que TommyDDR sait ce qu'est une valeur exacte, c'est pourquoi sa réponse n'est pas fausse.
Soient a et b deux entiers naturels, b divise a si et seulement si il existe un entier q tel que a = bq
Si b ne divise pas a, alors plusieurs cas se posent :
Dans ces cas là, plusieurs options s'offrent à toi, tu peux te permettre d'arrondir les valeurs de ton calcul (je pense que l'ordinateur le fait de lui même de toutes façons) ou alors tu peux travailler ton système de sortie pour qu'il soit exacte.
Ainsi on pourra dire que 1/3 = 0.33 qui sont tous les deux le résultat exact de 0.3333333333...
Ma suggestion au final serait la suivante, que tu crées/trouves une fonction qui vérifie si un nombre donné rentre dans tes critères de sorties, dans ces cas là on l'affiche, sinon bien tu affiches une bonne vieille chaîne de caractères du style :
Et un bon petit Execute au moment où tu as besoin du résultat :
je suis certain que TommyDDR sait ce qu'est une valeur exacte, c'est pourquoi sa réponse n'est pas fausse.
Soient a et b deux entiers naturels, b divise a si et seulement si il existe un entier q tel que a = bq
Si b ne divise pas a, alors plusieurs cas se posent :
- La valeur obtenue contient un nombre fini de décimales auquel cas le résultat est exacte mais long
- La valeur obtenue contient un nombre infini de décimales, souvent il existe un rang pour lequel on aperçoit un ou des chiffres se répéter interminablement. Exemple 1/3 = 0.33333333333 que l'on peut noter aussi 0.33, et aucun ordinateur ne pourrait stocker toutes les décimales de ce nombre puisque il y'en a une infinité.
Dans ces cas là, plusieurs options s'offrent à toi, tu peux te permettre d'arrondir les valeurs de ton calcul (je pense que l'ordinateur le fait de lui même de toutes façons) ou alors tu peux travailler ton système de sortie pour qu'il soit exacte.
Ainsi on pourra dire que 1/3 = 0.33 qui sont tous les deux le résultat exact de 0.3333333333...
Ma suggestion au final serait la suivante, que tu crées/trouves une fonction qui vérifie si un nombre donné rentre dans tes critères de sorties, dans ces cas là on l'affiche, sinon bien tu affiches une bonne vieille chaîne de caractères du style :
Code : Tout sélectionner
$nbr = "1/3"
Code : Tout sélectionner
Execute($nbr)
Étudiant en 2ème année de Licence Informatique.
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : En ligne
Re: [...] Retourner la valeur exacte d'un nombre
@azerty2699 : Tlem vous a demandé combien de chiffres après la virgule, vous avez répondu "plein" donc potentiellement une infinité, d'où ma réponse.
Je vous l'accorde, je n'ai pas vu "sous forme fractionnaire par exemple" et je m'en excuse.
Pouvez-vous expliquer le but de cette demande ?
Je vous l'accorde, je n'ai pas vu "sous forme fractionnaire par exemple" et je m'en excuse.
Pouvez-vous expliquer le but de cette demande ?
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [...] Retourner la valeur exacte d'un nombre
La réponse de jbnh correspond parfaitement à ce qui est demandé
Code : Tout sélectionner
$f = (-8) / (11/2)
$a = D2F($f)
MsgBox(0, $f, $a[0] & "/" & $a[1])
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- jchd
- AutoIt MVPs (MVP)
- Messages : 2273
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [...] Retourner la valeur exacte d'un nombre
Wolfram Alpha ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- jbnh
- Niveau 11
- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [...] Retourner la valeur exacte d'un nombre
Je précise que ce n'est pas ma création mais je l'avais trouvée sur le forum anglaismikell a écrit :La réponse de jbnh correspond parfaitement à ce qui est demandéCode : Tout sélectionner
$f = (-8) / (11/2) $a = D2F($f) MsgBox(0, $f, $a[0] & "/" & $a[1])
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci