### Godot version

4.1.1

### System information

linux

### Issue description

The `"%+f"` format adds a `+` sign in front of positive numbers. If you try to format `-0.0`, it breaks and displays both a `+` and a `-`.

### Steps to reproduce

```gdscript
@tool
extends EditorScript

func _run() -> void:
    print("%+f" % -0.0)
```

### Minimal reproduction project

see above
}
 ::erase(int p_pos, int p_chars) const {
	ERR_FAIL_COND_V_MSG(p_pos < 0, "", vformat("Invalid starting position for `.erase()`: %d. Starting position must be positive or zero.", p_pos));
	ERR_FAIL_COND_V_MSG(p_chars < 0, "", vformat("Invalid character count for `.erase()`: %d. Character count must be positive or zero.", p_chars));
	return left(p_pos) + substr(p_pos + p_chars);
}
 ::substr(int p_from, int p_chars) const {
	if (p_chars == -1) {
		p_chars = length() - p_from;
	}
	if (is_empty() || p_from < 0 || p_from >= length() || p_chars <= 0) {
		return "";
	}
	if ((p_from + p_chars) > length()) {
		p_chars = length() - p_from;
	}
	if (p_from == 0 && p_chars >= length()) {
		return (*this);
	}
	 s;
	s.copy_from_unchecked(&get_data()[p_from], p_chars);
	return s;
}
int ::find(const  &p_str, int p_from) const {
	if (p_from < 0) {
		return -1;
	}
	const int src_len = p_str.length();
	const int len = length();
	if (src_len == 0 || len == 0) {