Jeff Abrahamson on 18 Aug 2004 15:09:02 -0000 |
On Wed, Aug 18, 2004 at 10:17:18AM -0400, Walt Mankowski wrote: > [21 lines, 152 words, 777 characters] Top characters: etinosdh > > On Wed, Aug 18, 2004 at 07:55:50AM -0400, Jeff Abrahamson wrote: > > And if you want to stay compatible with C, you can always set it by > > dividing by zero: > > > > float f = 0.0 / 0.0; > > > > You may have to fiddle with signals to avoid faulting, but I've > > certainly done this by accident. ;-) > > Now you see, this highlights the inherent problems in doing this kind > of coding. In theory, my function should only return values between 0 > and 1, so I should be fine just setting it to -1 to mean "no value". > But I'm trying to be defensive, so I set it to NaN instead. But what > if the code's broken and actually *does* divide by 0? > > Sigh. > > Since both events are unlikely, and since using NaN is causing me some > headaches, I'm thinking I'm better off just using -1 as a flag. If you really want to be safe, you have to give up some performance (but not much) and add some complexity (but not much): typedef struct myfloat { float val; bool ok; } MyFloat; With C++ overrides, this can behave syntactically like a float. -- Jeff Jeff Abrahamson <http://www.purple.com/jeff/> +1 215/837-2287 GPG fingerprint: 1A1A BA95 D082 A558 A276 63C6 16BF 8C4C 0D1D AE4B A cool book of games, highly worth checking out: http://www.amazon.com/exec/obidos/ASIN/1931686963/purple-20 Attachment:
signature.asc
|
|