Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

calcul javascript



  1. #1
    oxycryo

    calcul javascript


    ------

    bonjour à tous et toutes,

    normalement les calcul en javascript fonctionne
    j'ai débugué une petite erreur dans une fonction contenant un tout petit calcul, tout petit...

    parseInt(a) + parseInt(b) = c (forme du calcul qui buggait)

    le résultat tombait sur c = 379... et les racines, 214 + 245 (enfin normalement... )

    saurez vous trouver le petit grain de sable s'étant "cooooinncé" dans les rouages subtil de javascript98... pour obtenir ce résultat

    -----
    libera me : ungoogled chromium, e.foundation (anti-droid)

  2. Publicité
  3. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  4. #2
    Merlin95

    Re : calcul javascript

    Pas compris peux tu donner le code qui illustre l'erreur, avec les valeurs des données en entrée et en sortie ?
    « Il y a 3 sortes de gens au monde : ceux qui savent compter et ceux qui ne savent pas. »

  5. #3
    oxycryo

    Re : calcul javascript

    ben non, merlin95... précisément... c'est cette erreur qu'il faut retrouver
    une aide
    https://www.w3schools.com/jsref/tryi...jsref_parseint
    cela permet de tester des options ...

  6. #4
    Merlin95

    Re : calcul javascript

    L'informatique ça doit être déterministe et correspondre non pas à ce à quoi on pourrait s'attendre intuitivement mais à ce qui est spécifié :

    The parseInt function produces an integer value dictated by interpretation of the contents of the string argument according to the specified radix. Leading white space in string is ignored. If radix is undefined or 0, it is assumed to be 10 except when the number begins with the character pairs 0x or 0X, in which case a radix of 16 is assumed. If radix is 16, the number may also optionally begin with the character pairs 0x or 0X.

    When the parseInt function is called, the following steps are taken:

    Let inputString be ToString(string).
    Let S be a newly created substring of inputString consisting of the first character that is not a StrWhiteSpaceChar and all characters following that character. (In other words, remove leading white space.) If inputString does not contain any such characters, let S be the empty string.
    Let sign be 1.
    If S is not empty and the first character of S is a minus sign -, let sign be −1.
    If S is not empty and the first character of S is a plus sign + or a minus sign -, then remove the first character from S.
    Let R = ToInt32(radix).
    Let stripPrefix be true.
    If R ≠ 0, then
    If R < 2 or R > 36, then return NaN.
    If R ≠ 16, let stripPrefix be false.
    Else, R = 0
    Let R = 10.
    If stripPrefix is true, then
    If the length of S is at least 2 and the first two characters of S are either “0x” or “0X”, then remove the first two characters from S and let R = 16.
    If S contains any character that is not a radix-R digit, then let Z be the substring of S consisting of all characters before the first such character; otherwise, let Z be S.
    If Z is empty, return NaN.
    Let mathInt be the mathematical integer value that is represented by Z in radix-R notation, using the letters A-Z and a-z for digits with values 10 through 35. (However, if R is 10 and Z contains more than 20 significant digits, every significant digit after the 20th may be replaced by a 0 digit, at the option of the implementation; and if R is not 2, 4, 8, 10, 16, or 32, then mathInt may be an implementation-dependent approximation to the mathematical integer value that is represented by Z in radix-R notation.)
    Let number be the Number value for mathInt.
    Return sign × number.
    NOTEparseInt may interpret only a leading portion of string as an integer value; it ignores any characters that cannot be interpreted as part of the notation of an integer, and no indication is given that any such characters were ignored.
    https://262.ecma-international.org/5.1/#sec-15.1.2.2

    Du coup en fonction de çà on peut chercher tout ce qui pourrait être piégeux mais la liste pourrait être longue.

    Il vaudrait mieux plutôt que tu mettes ton programme complet ici avec le résultat "étrange" pour qu'on devine ce que javascript fait (sans lire la spec bien sûr), sinon je vois pas ce qu'il y a d'amusant à chercher.
    Dernière modification par Merlin95 ; 30/11/2021 à 00h02.
    « Il y a 3 sortes de gens au monde : ceux qui savent compter et ceux qui ne savent pas. »

  7. A voir en vidéo sur Futura
  8. #5
    polo974

    Re : calcul javascript

    245 pris en octal à cause d'un 0 devant...

    qqpart b=0245 au lieu de b=245

    piège classique pour les "anciens"...

    d'où les nooooombreux o à "cooooinncé" ? ? ?
    Dernière modification par polo974 ; 30/11/2021 à 14h28.
    Jusqu'ici tout va bien...

  9. #6
    Merlin95

    Re : calcul javascript

    Non pas suivant la spécification donnée plus haut en tout cas

  10. Publicité
  11. #7
    oxycryo

    Re : calcul javascript

    bon, comme je n'arrive pas à reproduire l'erreur en question... le code en question a été modifié pour donner de meillleur résultat

    donc vous avez tout les deux raisons... d'un coté c'est bien un octal, avec un zero qui s'est coincé avant le résultat... laissant le code filer(pas d'erreur) mais avec des résultats "bizarre"

    et de l'autre, comme ce que j'ai mis plus haut ne permet pas de produire l'erreur donc .... fin de partie ...

    A+

  12. #8
    vgondr98

    Re : calcul javascript

    Dans la console, voila ce que l'on obtient

    var x = 214 + 0245
    console.log(x);
    VM73:2 379

Discussions similaires

  1. javascript
    Par pseudomehdi dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 16/08/2019, 14h29
  2. Javascript: Calcul dans un formulaire !Help!
    Par olivier147 dans le forum Programmation et langages, Algorithmique
    Réponses: 42
    Dernier message: 17/04/2015, 11h12
  3. Javascript : Intégrer une variable javascript dans un champ de formulaire html
    Par squal31 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 03/08/2014, 12h15
  4. calcul en javascript
    Par electrique10 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 03/10/2013, 20h41
  5. Javascript
    Par Popo037 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 14/11/2008, 15h47