标签云

微信群

扫码加入我们

WeChat QR Code

So I have a function that looks something like this:float function(){float x = SomeValue;return x / SomeOtherValue;}At some point, this function overflows and returns a really large negative value.To try and track down exactly where this was happening, I added a cout statement so that the function looked like this:float function(){float x = SomeValue;cout << x;return x / SomeOtherValue;}and it worked!Of course, I solved the problem altogether by using a double.But I'm curious as to why the function worked properly when I couted it.Is this typical, or could there be a bug somewhere else that I'm missing?(If it's any help, the value stored in the float is just an integer value, and not a particularly big one.I just put it in a float to avoid casting.)


There is also a GCC note for this at gcc.gnu.org/wiki/x87noteDue to this wonderful behaviour, comparing floating point computations is also inherently broken, unless using pre-computed values.

2019年06月21日42分40秒