• [^] # Re: Rien de surprenant

    Posté par (Mastodon) . En réponse au journal [Humour] vers un monde différent. Évalué à -4.

    Clair, c'est compliqué de bouger un truc aussi "de base" que la représentation des nombres. C'est hyper casse-geule, et ce (削除) thread (削除ここまで) troll m'aura au moins appris le changement fondamental (et ô combien risqué !) qu'a apporté le int * int -> float

    Pour les litéraux, l'idée serait en effet de partir sur des Decimaux, sauf si :
    - on précise qu'on veut un float (bien évidemment)
    - le littéral a trop de chiffres significatifs, ou une précision trop grande (bref, il est pas représentable en Décimal)

    Ensuite tu manipules : tu additionnes (bcp de chances que tu restes en Decimaux), soustraits (idem), multiplie (attention, ça va plus facilement déborder) ou divise (là on le sait, c'est souvent la complication). Tant que tout va bien, tu restes en Decimal. Comme le Decimal propose déjà tout un tas de signaux, notamment pour les débordements et pour la perte d'exactitude, on peut imaginer de se raccrocher à ça en se disant "ok, j'abandonne, passons en flottant" (avant la dite opération, ce qui sous-entend que tu fais l'opération, tu vois que ça pête, donc tu convertis tes 2 opérandes en float, puis tu refais l'opération en float... )

    Le pb c'est que le programmeur à priori ne sais pas si il aura affaire à un Décimal ou à un flottant, et là ça fait pas trop plaisir en général. Il peut toujours récupérer le signal de perte d'exactitude, il saura qu'on a basculé (ou tester le type() )...

    Mais du coup, tu gardes une exactitude sur les valeurs courantes "du CM2", mais tu gardes la puissance de représentation de l'IEEE quand ça se fait sentir.

    Et reste le pb des perfos bien évidemment.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.