### 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
CHECK(key == 2);
}
TEST_CASE("[String] Find and replace") {
	String s = "Happy Birthday, Anna!";
	s = s.replace("Birthday", "Halloween");
	CHECK(s == "Happy Halloween, Anna!");
	s = s.replace_first("H", "W");
	CHECK(s == "Wappy Halloween, Anna!");
}
TEST_CASE("[String] Insertion") {
	String s = "Who is Frederic?";
	s = s.insert(s.find("?"), " Chopin");
	CHECK(s == "Who is Frederic Chopin?");
}
TEST_CASE("[String] Erasing") {
	String s = "Josephine is such a cute girl!";
	s = s.erase(s.find("cute "), String("cute ").length());
	CHECK(s == "Josephine is such a girl!");
}
TEST_CASE("[String] Number to string") {
	CHECK(String::num(0) == "0");
	CHECK(String::num(0.0) == "0"); 
	CHECK(String::num(-0.0) == "-0"); 
	CHECK(String::num(3.141593) == "3.141593");
	CHECK(String::num(3.141593, 3) == "3.142");
	CHECK(String::num_scientific(30000000) == "3e+07");
	CHECK(String::num_int64(3141593) == "3141593");
	CHECK(String::num_int64(0xA141593, 16) == "a141593");
	CHECK(String::num_int64(0xA141593, 16, true) == "A141593");
	CHECK(String::num(42.100023, 4) == "42.1");