Files
saselang-bible/examples/024-casts-et-conversions-examples.md
2026-09-12 18:12:13 +02:00

2.9 KiB

Exemples / DO-DON'T — Chapitre 24 — Casts et conversions

Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.

Exemples extraits du chapitre

Exemple 1

conversion de valeur
cast de hiérarchie nominale
bitcast de représentation binaire

Exemple 2

int8 small = ...;
int32 large = small;                 // ERROR
int32 explicitLarge = small::toInt32(); // OK

Exemple 3

Dog dog = ...;
Animal animal = dog;
Serializable serializable = dog;

Exemple 4

Animal animal = ...;

if (animal is Dog) {
    // animal est raffiné en Dog ici.
}

Exemple 5

toTarget()
    conversion exacte et totale

tryToTarget()
    conversion exacte pour la valeur courante, récupérable si impossible

roundToTarget()
    perte de précision explicitement acceptée, conversion totale

tryRoundToTarget()
    perte de précision explicitement acceptée, mais conversion pouvant échouer

saturateToTarget()
    saturation explicite lorsqu'aucun arrondi supplémentaire n'est nécessaire

saturatingRoundToTarget()
    arrondi + saturation explicitement annoncés

wrapToTarget()
    wrapping entier explicite

Exemple 6

tryToIntXX()
tryToUintXX()

Exemple 7

floor()
ceil()
round()
truncate()

Exemple 8

value::floor()::tryToInt32()
value::ceil()::tryToInt32()
value::round()::tryToInt32()
value::truncate()::tryToInt32()

Exemple 9

value::floor()::trySaturateToInt32()
value::round()::tryWrapToInt32()

Exemple 10

NaN       -> NaN
+Infinity -> +Infinity
-Infinity -> -Infinity
+0        -> +0
-0        -> -0

Exemple 11

payload NaN
quiet/signaling bit
signe du NaN
représentation binaire exacte

Exemple 12

tryToFloatXX()
    exige une représentation exacte

tryRoundToFloatXX()
    accepte l'arrondi canonique
    refuse une valeur finie hors domaine fini destination

saturatingRoundToFloatXX()
    accepte l'arrondi canonique
    sature une valeur finie hors domaine vers +/-Target::Max

Exemple 13

NotFinite
NotIntegral
OutOfRange
Inexact

Exemple 14

NotFinite
    NaN ou +/-Infinity lorsqu'une valeur finie est requise

NotIntegral
    float -> integer alors que la valeur n'est pas mathématiquement entière

OutOfRange
    valeur mathématique hors du domaine de la destination

Inexact
    valeur dans le domaine destination mais non représentable exactement
    alors que l'opération exige l'exactitude

Exemple 15

sourceType
targetType
sourceValue
timestamp
backend
roundingMode

Exemple 16

annexes/A-numeric-conversions.md

DO / DON'T / WHY / compiler error / edge cases

À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.