Probably because the variables are assumed to be int and not floats and narrowing conversion occurs. Its best to use types when you do not want that to happen.
var a : float = 100.0 / (0.0 + 7.0) * 7.0
var b : float = 100.0 / (0.0 + 17.0) * 17.0
var c : float = 100.0 / (4.0 + 17.0) * 17.0
print(a)
print(b)
print(c)
This is not unique to gdscript. In many programming languages, math performed on only integers always results in an integer. Really, if you elevate any of the values in the expression to a float, the result will also be a float. So, for that first example, just this would give you the expected result:
var a = 100.0 / (0 + 7) * 7 # change 100 to a float value