diff --git a/pkg/schema/field/number.go b/pkg/schema/field/number.go
index 00c264a2801f33f70129237d8072f7dfe5730c82..de96a3f68cc0d452acfd71c63bf0cafe152daad7 100644
--- a/pkg/schema/field/number.go
+++ b/pkg/schema/field/number.go
@@ -10,6 +10,8 @@ import (
 const (
 	NumberFormatInt   = "int"
 	NumberFormatFloat = "float"
+	maxInt            = 1<<53 - 1
+	minInt            = -1<<53 + 1
 )
 
 var numberType = &NumberType{}
@@ -88,8 +90,8 @@ func (NumberType) decode(_ context.Context, field *Field, v interface{}) (interf
 		case uint64:
 			return i, nil
 		case float64:
-			if i >= math.MaxInt64 || i <= math.MinInt64 {
-				return nil, errors.Errorf("the passed value %f must be no more than %d and no less than %d", i, math.MaxInt64, math.MinInt64)
+			if i > maxInt || i < minInt {
+				return nil, errors.Errorf("the passed value %f must be in the range from %d to %d", i, maxInt, minInt)
 			}
 			return int64(math.Round(i)), nil
 		}
diff --git a/pkg/schema/field/number_test.go b/pkg/schema/field/number_test.go
index 82a4c219ab39323a8a114074b1c4d98f39581497..907291ccaf2d0f8807797b2c1873ac0de3682ab5 100644
--- a/pkg/schema/field/number_test.go
+++ b/pkg/schema/field/number_test.go
@@ -22,17 +22,19 @@ func TestNumberField_Decode(t *testing.T) {
 		{"Correct", Number("int"), 2.6, int64(3), false},                                         // #5
 		{"MaxInt64", Number(NumberFormatInt), int64(math.MaxInt64), int64(math.MaxInt64), false}, // #6
 		{"MinInt64", Number(NumberFormatInt), int64(math.MinInt64), int64(math.MinInt64), false}, // #7
-		{"Convert error", Number(NumberFormatInt), math.MaxFloat64, nil, true},                   // #8
-		{"Convert error", Number(NumberFormatInt), -9223372036854776000.0, nil, true},            // #9
-		{"Convert error", Number(NumberFormatInt), 9223372036854776000.0, nil, true},             // #10
-		{"Convert error", Number(NumberFormatInt), float64(math.MaxInt64), nil, true},            // #11
-		{"Convert error", Number(NumberFormatInt), float64(math.MinInt64), nil, true},            // #12
+		{"maxInt in float", Number(NumberFormatInt), float64(maxInt), int64(maxInt), false},      // #8
+		{"minInt in float", Number(NumberFormatInt), float64(minInt), int64(minInt), false},      // #9
+		{"Convert error", Number(NumberFormatInt), math.MaxFloat64, nil, true},                   // #10
+		{"Convert error", Number(NumberFormatInt), -9223372036854776000.0, nil, true},            // #11
+		{"Convert error", Number(NumberFormatInt), 9223372036854776000.0, nil, true},             // #12
+		{"Convert error", Number(NumberFormatInt), float64(math.MaxInt64), nil, true},            // #13
+		{"Convert error", Number(NumberFormatInt), float64(math.MinInt64), nil, true},            // #14
 
-		{"Correct", Number("float"), int8(2), 2.0, false},                    // #13
-		{"Correct", Number("float"), 2.2, 2.2, false},                        // #14
-		{"Correct", Number("float"), 2, 2.0, false},                          // #15
-		{"Correct", Number("float"), float32(2.2), 2.200000047683716, false}, // #16
-		{"Correct", Number("float"), int64(2), 2.0, false},                   // #17
+		{"Correct", Number("float"), int8(2), 2.0, false},                    // #15
+		{"Correct", Number("float"), 2.2, 2.2, false},                        // #16
+		{"Correct", Number("float"), 2, 2.0, false},                          // #17
+		{"Correct", Number("float"), float32(2.2), 2.200000047683716, false}, // #18
+		{"Correct", Number("float"), int64(2), 2.0, false},                   // #19
 
 		{"Wrong data", Number("int"), "", nil, true},         // #0
 		{"Wrong data", Number("int"), []byte(""), nil, true}, // #1