Ce sujet est résolu.
1 | |||||
Auteur | Messages | ||||
---|---|---|---|---|---|
valaquarus | #1 Posté le 4/7/2022 à 02:22:45 | ||||
-- Unus Ex Altera -- | Bonsoir à tous, je vous invite à tester ceci :
et bien on n'obtient pas le même résultat à cause de l'arrondi de Int qui n'intervient pas au même moment. Essayez avec des grands nombres au dessus de 22 000 000,00, par exemple avec 22 000 000,34 dans le premier cas on obtient bien 34, dans le second on obtient 33. Pour moi et mes Maths, c'est une bizarrerie. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
spheris | #2 Posté le 4/7/2022 à 05:35:23 | ||||
Philippe, version 3.14 de GB, je ne trouve pas 34 mais bien 33.99999999850988 car je déclare la variable lasomme comme un float. Effectivement lasomme en integer me renvoit 34. Attention de bien utiliser des float sur toute la ligne et d'effectuer la conversion en integer après. | |||||
Patrick | #3 Posté le 4/7/2022 à 09:05:28 | ||||
Pour partiellement résoudre ce problème j'avais fait cette fonction :
| |||||
valaquarus | #4 Posté le 4/7/2022 à 10:42:47 | ||||
-- Unus Ex Altera -- | Merci à tous les deux, effectivement vous avez raison sur la forme mais sur le fond je reste dubitatif sur des fonctions qui ne font leur travail correctement et qu'il faille les "compenser". dans le premier cas, la multiplication est bien prioritaire
Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
valaquarus | #5 Posté le 4/7/2022 à 10:57:09 | ||||
-- Unus Ex Altera -- | Pour ceux que les maths passionnent, un lien pertinent sur ce thème : Partie entière et partie fractionnaire. En lisant je tombe la dessus Problème des pièces de monnaie Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
valaquarus | #6 Posté le 4/7/2022 à 20:51:26 | ||||
-- Unus Ex Altera -- | @Patrick, juste une question bête mais qui me tracasse, dans ta fonction, comment assignes tu, ndec, qui doit être le nombre de décimales voulu ? Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
linuxos | #7 Posté le 5/7/2022 à 02:15:00 | ||||
Un peu de sel, de poivre et la crevette sera... | valaquarus, Le deuxième calcul est me semble-t-il correcte, car au niveau informatique, priorité va sur les 'opérateur': *, /, + ,- mais aussi de l'intérieur des parenthèses vers l'extérieur des parenthèses, ce qui fait que ' (tb1.Value - Int(tb1.Value)) ' est effectué en premier, puis '* 100' Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||||
valaquarus | #8 Posté le 5/7/2022 à 09:52:04 | ||||
-- Unus Ex Altera -- | @Liuxos, merci de cette réponse qui est rassurante même si je pensais que l'informatique et les maths marchaient de concert, il y a des dérogations qu'il faut apprendre à repérer. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
spheris | #9 Posté le 5/7/2022 à 15:37:35 | ||||
Valaquarus, Excuse moi cette question, mais, Pour quelle raison convertis-tu tout de suite tb1.value? peux tu m'expliquer quel avantage y a til à faire cela? Je ne comprends pas bien pourquoi tu mélanges des float et des integer dans la fonction. J'ai, par principe de programmation,l'habitude de traiter les float avec les float puis de convertir le résultat en integer. | |||||
valaquarus | #10 Posté le 5/7/2022 à 16:33:27 | ||||
-- Unus Ex Altera -- | Non, spheris , cette question me semble pertinente mais j'avoue qu'elle me laisse sans voix car je n'y aie pas réfléchi. Ici je faisais la récupération d'une valeur float qui doit servir dans un calcul interger donc obligation de conversion en antériorité.
Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
spheris | #11 Posté le 5/7/2022 à 16:46:45 | ||||
C'est bien la même chose effectivement ..... et me semble-t-il la même erreur. J'ecrirais plutôt cela :
| |||||
valaquarus | #12 Posté le 5/7/2022 à 17:53:14 | ||||
-- Unus Ex Altera -- | D'accord je n'avais compris où tu m'emmenais. Personnellement je ne vois pas la nécessité de passer par une variable intermédiaire. Pour moi, ça:
Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
1 |