> For the complete documentation index, see [llms.txt](https://radoslaw-medryk.gitbook.io/verifica/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://radoslaw-medryk.gitbook.io/verifica/predicates/built-in-predicates/isnumberinrange.md).

# isNumberInRange

```typescript
isNumberInRange({ min, max })
```

Verifies if provided `Verificable` represents a finite number within specified range. Both `min` and `max` arguments are optional - not providing any of them means value on that 'end' will not be checked.

### Arguments:

* `min` - optional, of type `number`&#x20;
* `max` - optional, of type `number`&#x20;

### Possible errors:

#### If provided `Verificable` is not a number:

```typescript
{
    type: "isNumber",
    path: [/* ... */]
}
```

#### If provided `Verificable` is not a finite number:

```typescript
{
    type: "isFiniteNumber",
    path: [/* ... */]
}
```

#### If provided `Verificable` is a number outside the range:

```typescript
{
    type: "isNumberInRange",
    path: [/* ... */],
    min: /* provided min value */,
    max: /* provided max value */,
}
```

### Examples:

Each of examples uses this import statement:

```typescript
const { asVerificable, isValid, isNumberInRange, getErrors } = require("verifica");
```

#### Null or undefined is not considered a number:

```typescript
const verificable = asVerificable(null);
isValid(verificable, isNumberInRange({ min: 100, max: 200 })); // false
```

#### String value is not considered a number as well:

```typescript
const verificable = asVerificable("123");
isValid(verificable, isNumberInRange({ min: 100, max: 200 })); // false
```

#### Not finite numbers will not match with `isFiniteNumber` error:

```typescript
const verificable = asVerificable(Infinity);
isValid(verificable, isNumberInRange({ min: 100 })); // false
getErrors(verificable, isNumberInRange({ min: 100 }));
// [{ type: "isFiniteNumber", path: [] }]
```

#### Any finite number outside of requested range will fail with `isNumberInRange` error:

```typescript
const verificable = asVerificable(9999);
isValid(verificable, isNumberInRange({ min: 100, max: 200 })); // false
getErrors(verificable, isNumberInRange({ min: 100, max: 200 }));
// [{ type: "isNumberInRange", min: 100, max: 200, path: [] }]
```

#### Not providing `min`, `max` or both constrains will mean no requirement on those missing 'ends' of the range:

```typescript
const verificable = asVerificable(9999);
isValid(verificable, isNumberInRange({ min: 100 })); // true
```
