### 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
}
 ::json_escape() const {
	 escaped = *this;
	escaped = escaped.replace("\\", "\\\\");
	escaped = escaped.replace("\b", "\\b");
	escaped = escaped.replace("\f", "\\f");
	escaped = escaped.replace("\n", "\\n");
	escaped = escaped.replace("\r", "\\r");
	escaped = escaped.replace("\t", "\\t");
	escaped = escaped.replace("\v", "\\v");
	escaped = escaped.replace("\"", "\\\"");
	return escaped;
}
 ::xml_escape(bool p_escape_quotes) const {
	 str = *this;
	str = str.replace("&", "&amp;");
	str = str.replace("<", "&lt;");
	str = str.replace(">", "&gt;");
	if (p_escape_quotes) {
		str = str.replace("'", "&apos;");
		str = str.replace("\"", "&quot;");
	}
	/*
for (int i=1;i<32;i++) {
	char chr[2]={i,0};
	str=str.replace(chr,"&#"+::num(i)+";");
}*/
	return str;
}
static _FORCE_INLINE_ int _xml_unescape(const char32_t *p_src, int p_src_len, char32_t *p_dst) {