2.9 KiB
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.