### Godot version

4.2.dev3.official

### System information

Windows 10 - GLES3 (Compatibility)

### Issue description

When using the SpinBox node, it is possible for a user to input `NAN` into it (by clicking it and writing "NAN" as text).

I believe this should either be prevented (for example with an `allow_nan` property), or [documented](https://docs.godotengine.org/en/latest/classes/class_spinbox.html), as developers might not know that they should be checking the SpinBox's value against it.

![image](https://github.com/godotengine/godot/assets/141344817/ba1455e2-36b8-45f1-940d-32b9da92f1c4)


### Steps to reproduce

0. Create a new project.
1. Add a SpinBox node.
2. Run the project.
3. Click the SpinBox.
4. Type "NAN".
5. Press enter.

### Minimal reproduction project

[SpinBox NAN - MPR.zip](https://github.com/godotengine/godot/files/12448902/SpinBox.NAN.-.MPR.zip)

ClassDB::bind_method(D_METHOD("set_allow_lesser", "allow"), &Range::set_allow_lesser);
	ClassDB::bind_method(D_METHOD("is_lesser_allowed"), &Range::is_lesser_allowed);
	ClassDB::bind_method(D_METHOD("share", "with"), &Range::_share);
	ClassDB::bind_method(D_METHOD("unshare"), &Range::unshare);
	ADD_SIGNAL(MethodInfo("value_changed", PropertyInfo(Variant::FLOAT, "value")));
	ADD_SIGNAL(MethodInfo("changed"));
	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "min_value"), "set_min", "get_min");
	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_value"), "set_max", "get_max");
	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "step"), "set_step", "get_step");
	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "page"), "set_page", "get_page");
	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "value"), "set_value", "get_value");
	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ratio", PROPERTY_HINT_RANGE, "0,1,0.01", PROPERTY_USAGE_NONE), "set_as_ratio", "get_as_ratio");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "exp_edit"), "set_exp_ratio", "is_ratio_exp");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rounded"), "set_use_rounded_values", "is_using_rounded_values");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_greater"), "set_allow_greater", "is_greater_allowed");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_lesser"), "set_allow_lesser", "is_lesser_allowed");
	GDVIRTUAL_BIND(_value_changed, "new_value");
	ADD_LINKED_PROPERTY("min_value", "value");
	ADD_LINKED_PROPERTY("min_value", "max_value");
	ADD_LINKED_PROPERTY("min_value", "page");
	ADD_LINKED_PROPERTY("max_value", "value");
	ADD_LINKED_PROPERTY("max_value", "page");
}
void Range::set_use_rounded_values(bool p_enable) {
	_rounded_values = p_enable;
}
bool Range::is_using_rounded_values() const {
	return _rounded_values;
}
void Range::set_exp_ratio(bool p_enable) {