30f + 0.5f = 30f What??????

The basic operation of adding seems to be broken on the Mono that comes with the latest version of Unity3D. This bug doesn’t show up in the .NET that comes with Visual Studio 2010 SP1 and doesn’t seem to happen on the Mono that comes with MonoDevelop 3.0.5 (at least so I am told by Stack Overflow: .net - Floating point inconsistency in mono - Stack Overflow). Is there a workaround to this bug?

Not the case; there are no errors or bugs with operations like this. If anything like this ever happened, virtually no code would ever be able to run and it would never make it into a release. My guess is that you’re adding 0.5f to 30 as an integer.