diff --git a/option.go b/option.go
index 3635df3..934ea72 100644
--- a/option.go
+++ b/option.go
@@ -336,14 +336,27 @@
 
 	for {
 		switch tp.Kind() {
+		case reflect.Slice, reflect.Ptr:
+			tp = tp.Elem()
 		case reflect.Bool:
 			return true
-		case reflect.Slice:
-			return (tp.Elem().Kind() == reflect.Bool)
 		case reflect.Func:
 			return tp.NumIn() == 0
-		case reflect.Ptr:
+		default:
+			return false
+		}
+	}
+}
+
+func (option *Option) isSignedNumber() bool {
+	tp := option.value.Type()
+
+	for {
+		switch tp.Kind() {
+		case reflect.Slice, reflect.Ptr:
 			tp = tp.Elem()
+		case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Float32, reflect.Float64:
+			return true
 		default:
 			return false
 		}
diff --git a/parser.go b/parser.go
index 6477daa..3a55626 100644
--- a/parser.go
+++ b/parser.go
@@ -514,7 +514,7 @@
 		} else {
 			arg = s.pop()
 
-			if argumentIsOption(arg) {
+			if argumentIsOption(arg) && !(option.isSignedNumber() && len(arg) > 1 && arg[0] == '-' && arg[1] >= '0' && arg[1] <= '9') {
 				return newErrorf(ErrExpectedArgument, "expected argument for flag `%s', but got option `%s'", option, arg)
 			} else if p.Options&PassDoubleDash != 0 && arg == "--" {
 				return newErrorf(ErrExpectedArgument, "expected argument for flag `%s', but got double dash `--'", option)
diff --git a/parser_test.go b/parser_test.go
index 9f527b7..374f21c 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -398,9 +398,30 @@
 			args: []string{"-o", "-", "-"},
 			rest: []string{"-", "-"},
 		},
+		{
+			// Accept arguments which start with '-' if the next character is a digit, for number options only
+			args: []string{"--int-slice", "-3"},
+		},
+		{
+			// Accept arguments which start with '-' if the next character is a digit, for number options only
+			args: []string{"--int16", "-3"},
+		},
+		{
+			// Accept arguments which start with '-' if the next character is a digit, for number options only
+			args: []string{"--float32", "-3.2"},
+		},
+		{
+			// Accept arguments which start with '-' if the next character is a digit, for number options only
+			args: []string{"--float32ptr", "-3.2"},
+		},
 	}
+
 	var opts struct {
 		StringSlice []string `long:"string-slice"`
+		IntSlice    []int    `long:"int-slice"`
+		Int16       int16    `long:"int16"`
+		Float32     float32  `long:"float32"`
+		Float32Ptr  *float32 `long:"float32ptr"`
 		OtherOption bool     `long:"other-option" short:"o"`
 	}
 
