### 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
const char *snake_case;
};
TEST_CASE("[String] Checking case conversion methods") {
	StringCasesTestCase test_cases[] = {
		
		{ "2D",                "2d",              "2d",              "2d"                },
		{ "2d",                "2d",              "2d",              "2d"                },
		{ "2db",               "2Db",             "2Db",             "2_db"              },
		{ "Vector3",           "vector3",         "Vector3",         "vector_3"          },
		{ "sha256",            "sha256",          "Sha256",          "sha_256"           },
		{ "Node2D",            "node2d",          "Node2d",          "node_2d"           },
		{ "RichTextLabel",     "richTextLabel",   "RichTextLabel",   "rich_text_label"   },
		{ "HTML5",             "html5",           "Html5",           "html_5"            },
		{ "Node2DPosition",    "node2dPosition",  "Node2dPosition",  "node_2d_position"  },
		{ "Number2Digits",     "number2Digits",   "Number2Digits",   "number_2_digits"   },
		{ "get_property_list", "getPropertyList", "GetPropertyList", "get_property_list" },
		{ "get_camera_2d",     "getCamera2d",     "GetCamera2d",     "get_camera_2d"     },
		{ "_physics_process",  "physicsProcess",  "PhysicsProcess",  "_physics_process"  },
		{ "bytes2var",         "bytes2Var",       "Bytes2Var",       "bytes_2_var"       },
		{ "linear2db",         "linear2Db",       "Linear2Db",       "linear_2_db"       },
		{ "sha256sum",         "sha256Sum",       "Sha256Sum",       "sha_256_sum"       },
		{ "camelCase",         "camelCase",       "CamelCase",       "camel_case"        },
		{ "PascalCase",        "pascalCase",      "PascalCase",      "pascal_case"       },
		{ "snake_case",        "snakeCase",       "SnakeCase",       "snake_case"        },
		{ "Test TEST test",    "testTestTest",    "TestTestTest",    "test_test_test"    },
		{ nullptr,             nullptr,           nullptr,           nullptr             },
		
	};
	int idx = 0;
	while (test_cases[idx].input != nullptr) {