IEEE 754 accepte cinq modes d'arrondi possibles. J'avais codé dans le temps un interpréteur XPath, dont la partie arithmétique reposait sur l'IEEE 754, j'avais bien rigolé... J'avais fait comme les gars de NVidia : j'avais arbitrairement choisi un mode, et déclaré les autres comme buggués.
J'ai un problème de C++ peut-être un peu trop récent et je n'arrive pas à savoir qui est en tort. Voici un cas simplifié : j'essaye de parser une chaine au moment de la compilation et d'initialiser des variants en fonction du contenu de celle-ci. Ça fonctionne avec gcc mais pas avec clang ou msvc. La cause du problème semble être le changement d'alternative du variant avec std::variant::emplace.
clang + libstdc++ : member call on member '_M_rest' of union with active member '_M_first' is not allowed in a constant expression
msvc : failure was caused by a read of an uninitialized symbol see usage of 'std::_Variant_storage_<true,a,b>::_Tail'
libc++ ne supporte pas encore les variants constexpr. Mais les autres devraient être bons. "P1330R0 Changing the active member of a union inside constexpr" est supporté par tous les derniers compilateurs et "P2231R1 Missing constexpr in std::optional and std::variant" ne manque que dans libc++.
Est-ce que c'est moi qui ai mal compris ce qui est autorisé avec constexpr ? Ou est-ce que c'est un bug des compilateurs ? ou des implémentations des bibliothèques standard ? Le fait que 2 cas sur 3 le refuse me suggère que c'est moi, mais je ne comprends pas pourquoi.
Edit: en fait msvc fonctionne si change les types à l'intérieur du variant (lien compiler explorer), ça semble être deux problèmes différents.
Dernière modification par Cwningen ; 10/09/2022 à 16h06.
Il a l'air de galérer sur les unions constexpr.
A mon avis c'est un problème de language, faut utiliser autre chose parce que là tu te fais du mal.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Yep, en particulier il y a des gags où tu pars de x, tu ajoutes y (x+y), tu retranches y ((x+y)-y), tu ajoutes y (((x+y)-y)+y), et tu continues comme ça en alternant additions et soustractions, et ta suite dérive si tu utilises un mode d'arrondi particulier. Ça a l'air exotique comme ça, mais ajouter et retrancher de manière répétée une même valeur c'est un truc qu'on peut faire assez naturellement.
Travailler en virgule flottante, ça amène réellement des problèmes difficiles à résoudre (il y a de beaux exemples dans l'introduction du bouquin que je mentionnais). Et les informaticiens même compétents, ont tendance à ne pas les connaître. Ça me rappelle un étudiant de M2 qui, lors de sa soutenance de stage, expliquait que les normes dans le domaine où il avait travaillé (aéronautique) interdisaient certains trucs, notamment l'usage de flottants; quand j'avais demandé pourquoi (oui je suis fourbe), il avait été incapable de me répondre autrement que "parce que c'est comme ça", en gros.
En informatique de gestion aussi les flottants sont absolument exclus pour les variables financières, on utilise généralement des entiers avec une unité fixée au centime/millième/dix-millième d'euro selon le domaine. Et pour ceux qui passent outre la punition peut être assez sévère, quand il faut comprendre pourquoi - et l'expliquer à sa direction - la balance comptable censée être à 0 se retrouve en fait à 0,0001€.
Yop les gens,
Je vais devoir, bien contre mon gré, devenir opérationnel en Python 3 dans pas très longtemps (développement généraliste plutôt que scripting shell).
Je suis à la recherche de bouquin physique / ebook de qualité pour me mettre en selle sur les pratiques modernes de Python. Pas forcément nécessaire de couvrir les bases de la programmation, plutôt les idiomes qui vont bien en usage usuel.
Je n'ai rien contre les moocs non plus; la qualitay avant tout.
Avez-vous des ressources à me recommander ?
De préférence, dans la langue de "j'expire"...
Perso, dans la même situation que toi, je suis partie sur un livre en français: Python 3 - Les fondamentaux du langage de Sébastien Chazallet.
J'ai apprécié le livre car il parle pas mal de la philosophie du langage.
J'ai complété avec des ressources internet.
Je ne connaissais pas et je viens de tester : de ce que je vois, tu ne peux pas faire d'opérations mathématiques sur des BigDecimal. Du coup, dans le doute, j'ai fait :
J'aime beaucoup le résultat :Code:float f = Float.valueOf("0.12"); System.out.println(f); f += 0.12; System.out.println(f); f += 0.12; System.out.println(f); java.math.BigDecimal bd =BigDecimal.valueOf(f); System.out.println(bd);
Code:0.12 0.24 0.35999998 0.35999998450279236
Ben si, mais faut utiliser les méthodes, vu que ce ne sont pas des primitives.
Ou sinon, tu utilises des doubles.
EDIT : Tiens, example = https://www.online-java.com/BNlctVwOdj
Et après, on va entendre les mecs raler "ouais, java c'est de la merde, ouin, ouin". Apprenez a vous en servir, avant de raler
Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09
Ben oui pour l'argent tu prends des BigDecimal.
Pour le reste les Double c'est pas mal.
Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09
BigDecimal ça marche bien aussi, mais le code est un peu moche.
Et il ne faut surtout pas faire new BigDecimal(unDouble) sinon ça fait de la merde aussi.
https://stackoverflow.com/questions/...le-constructor
Effectivement, ça marche, mais c'est aussi très moche :
(Ouais, généralement, mes entrées sont en string )Code:java.math.BigDecimal bd = BigDecimal.valueOf(Double.valueOf("0.12")); bd = bd.add(BigDecimal.valueOf(Double.valueOf("0.12"))); bd = bd.add(BigDecimal.valueOf(Double.valueOf("0.12"))); System.out.println(bd); //0.36
Par contre avec des float.valueOf, c'est niet.
Il y a des constructeurs qui utilisent des chaines directement, utilisés d'ailleurs dans l'exemple de Teocali.
Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09
Bizarre, il me semblait que je ne pouvais l’instancier avec une string. C’est peut-être mon ide qui a fait des siennes.
Non mais pourquoi vous lisez pas ce qu'a écrit GrandFather? Les flottants (avec une précision ou une autre) c'est bien pour certains trucs, c'est pourri pour d'autres. Et dans certaines circonstances, c'est suffisamment critique pour qu'on s'impose des contraintes sur le développement des logiciels (et la thune, pour un financier, c'est critique).
très souvent, le problème avec Java, c'est pas tant le code que l'interface chaise-clavier...
Parce que sinon, on peut reparler de C++ et des développeurs C++, avec leur tendance a foutre des templates dans des templates. parce que là, en terme de lisibilité... J'ai deja vu passer des postes ici qui m'ont fracturé la rétine...
Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09
Quelqu'un bosse sur Azure Devops ?
J'essaie de faire un truc con, c'est mettre à dispo des releases. Je n'ai pas besoin que ça compile quoi que ce soit, je veux juste mettre des fichiers à dispo (notamment pour ceux qui sont stakeholders, un truc comme ça).
J'ai fait un artifact universl, j'ai fait un pipeline générique et... voilà Comment c'est censé marche cette merde ?
Alors j'ai bien compris qu'on pouvait télécharger le package via la CLI Azure, mais y'a pas moyen de le télécharger directement de l'interface web ?