### 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)

#include "range.h"
PackedStringArray Range::get_configuration_warnings() const {
	PackedStringArray warnings = Node::get_configuration_warnings();
	if (shared->exp_ratio && shared->min <= 0) {
		warnings.push_back(RTR("If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."));
	}
	return warnings;
}
void Range::_value_changed(double p_value) {
	GDVIRTUAL_CALL(_value_changed, p_value);
}
void Range::_value_changed_notify() {
	_value_changed(shared->val);
	emit_signal(SNAME("value_changed"), shared->val);
	queue_redraw();
}
void Range::Shared::emit_value_changed() {
	for (Range *E : owners) {
		Range *r = E;
		if (!r->is_inside_tree()) {
			continue;
		}
		r->_value_changed_notify();
	}
}
void Range::_changed_notify(const char *p_what) {