# Verifique os limites do esquema numérico em vez de assumir a coerção completa

> Verifique Int, SmallInt, TinyInt e Number2 com esquemas compactos nativos, incluindo valores fracionários, entradas zero e out-of-range.

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

Em `total5@0.0.19`, os tipos numéricos compactos entram no validador do número nativo. **`Int` não garante um integer**: `7.9` é preservado. também `Number2` conserva esta fração; não interprete seu nome como redondo para dois lugares decimais.

`TinyInt` aceita valores de 0 a 255. `SmallInt` aceita de -32767 a 32767; em particular, -32768 é rejeitado nesta versão. Estas verificações de subtipo impõem limites mas não exigem valores inteiros: `TinyInt` aceita `1.5`. Aplique uma verificação explícita com `Number.isInteger()` para identificadores, contadores ou quantidades que tenham de ser inteiros. Estas observações descrevem esta versão e os valores testados, não a semântica das colunas 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);
}
```
