### 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
APPEND_CHAR(uint32_t(0x80 | (c & 0x3f))); // 
		} else if (c <= 0x001fffff) { // 
			APPEND_CHAR(uint32_t(0xf0 | ((c >> 18) & 0x07))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 12) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 6) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | (c & 0x3f))); // 
		} else if (c <= 0x03ffffff) { // 
			APPEND_CHAR(uint32_t(0xf8 | ((c >> 24) & 0x03))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 18) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 12) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 6) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | (c & 0x3f))); // 
		} else if (c <= 0x7fffffff) { // 
			APPEND_CHAR(uint32_t(0xfc | ((c >> 30) & 0x01))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 24) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 18) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 12) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | ((c >> 6) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | (c & 0x3f))); // 
		} else {
			// 
			print_unicode_error(vformat("Non scalar value (%x)", c), true);
			APPEND_CHAR(uint32_t(0xe0 | ((_replacement_char >> 12) & 0x0f))); // 
			APPEND_CHAR(uint32_t(0x80 | ((_replacement_char >> 6) & 0x3f))); // 
			APPEND_CHAR(uint32_t(0x80 | (_replacement_char & 0x3f))); // 
		}
	}
#undef APPEND_CHAR
	*cdst = 0; //
	return utf8s;