# Controleer de numerieke schema-grenzen in plaats van een volledige coercium te nemen

> Check Int, SmallInt, TinyInt en Number2 met inheemse compacte schema's, inclusief fractiele waarden, nul- en out-of-range input.

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

In `total5@0.0.19`, de compacte numerieke typen alle in de native number validator. **`Int` garandeert geen integrer**: `7.9` wordt bewaard. `Number2` behoudt ook deze fractie; niet interpreteren zijn naam als rond naar twee decimale plaatsen.

`TinyInt` accepteert waarden van 0 tot en met 255. `SmallInt` accepteert -32767 tot en met 32767; met name -32768 wordt in deze versie afgewezen. Deze subtypecontroles dwingen grenzen af maar vereisen geen gehele waarden: `TinyInt` accepteert `1.5`. Pas een expliciete controle met `Number.isInteger()` toe voor identificatoren, tellers of hoeveelheden die geheel moeten zijn. Deze waarnemingen beschrijven deze versie en de geteste waarden, niet de semantiek van SQL-kolommen.

```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);
}
```
