# Vérifier les limites numériques au lieu d'assumer la coercition intégrale

> Vérifiez Int, SmallInt, TinyInt et Number2 avec des schémas compacts indigènes, y compris les valeurs fractionnelles, les entrées zéro et hors rang.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: fr
Content-SHA256: dbab85af9b63ebc74772f2f5a32a82721e1e29f3ec5192bc09038220cada399e
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Dans `total5@0.0.19`, les types numériques compacts entrent tous dans le validateur du nombre natif. **`Int` ne garantit pas un intégral**: `7.9` est conservé. `Number2` conserve également cette fraction; ne interprète pas son nom comme en rondant à deux places décimales.

`TinyInt` accepte les valeurs de 0 à 255. `SmallInt` accepte de -32767 à 32767 ; notamment, -32768 est rejeté dans cette version. Ces contrôles de sous-types imposent des bornes mais n'exigent pas de valeurs entières : `TinyInt` accepte `1.5`. Appliquez une vérification explicite avec `Number.isInteger()` pour les identifiants, compteurs ou quantités qui doivent être entiers. Ces observations décrivent cette version et les valeurs testées, pas la sémantique des colonnes SQL.

```js controllers/numbers.js
var schema = NEWSCHEMA('NumericBoundaries', '*integer:Int,*small:SmallInt,*tiny:TinyInt,*decimal:Number2');

exports.install = function() {
	ROUTE('POST /numbers/ @json', numbers);
};

function numbers($) {
	var result = schema.transform($.body);
	if (result.error) {
		$.response.status = 400;
		$.json({ error: 'invalid numeric input' });
		return;
	}
	$.json(result.response);
}
```
