Get the sign of a number and return '-' when the number is '-0'

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By OgGhostJelly

How do I get the sign of a float? for example -1 would be "-" and 1 would be "+".

Godot has a built-in sign() function but It doesn’t work if the number is -0. sign(-0) will be 0 and sign(0) will still be 0, so I can’t detect it.

Is there any bitwise operator or something that will allow me to get the sign of the number?

I found a hacky way of doing this by doing str(n)[0] == "-". Gets the first character of n. If it is "-" then return true

OgGhostJelly | 2023-05-16 04:28

I’m curious why the sign of zero matters to you. Not saying it shouldn’t / doesn’t - just not sure what the use-case would be…

jgodfrey | 2023-05-16 16:55

I was using some code to detect when a vector is in between the angle that two other vectors make and it would not detect whenever there was a negative zero.

I was using it to track which side a cube is facing, so 0 (right side) and -0 (left side) is a big difference.

Edit: nvm I can just use dot method to get the dot product I didnt need to do all that wierd vector stuff

OgGhostJelly | 2023-05-17 01:54

As far as gdscript is concerned 0 and -0 are exactly the same value, so I don’t really understand the above.

print(0 == -0)
# prints True

jgodfrey | 2023-05-17 02:10

:bust_in_silhouette: Reply From: godot_dev_

I beleive the below function should be what you are looking for

func mysign(fValue):
    if fValue < 0: 
        return "-" #negative
    elif fValue > 0: 
        return "+" #positive
    else:
        return "=" # zero