From cf6f47c9900479c14bbee563661d10966f6c0e09 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sun, 19 Jun 2011 07:28:23 -0400 Subject: [PATCH] float comparison! --- gowrikumar/src/08b-incrfloat.c | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 gowrikumar/src/08b-incrfloat.c diff --git a/gowrikumar/src/08b-incrfloat.c b/gowrikumar/src/08b-incrfloat.c new file mode 100644 index 0000000..782aedb --- /dev/null +++ b/gowrikumar/src/08b-incrfloat.c @@ -0,0 +1,43 @@ +/** + * :author: Dan Buch (daniel.buch@gmail.com) + */ + +#include +#include + +int main() +{ + float f = 0.0f; + int i; + + for (i = 0; i < 10; i++) { + f = f + 0.1f; + } + + if (f == 1.0) { + printf("f is 1.0 \n"); + /* nope! */ + } + + if (f == 1.000000) { + printf("f is perhaps 1.000000?\n"); + /* nope again */ + } + + printf("f is neither 1.0 nor 1.000000\n"); + printf("(f is really %.24f)\n", f); + printf("OH NOES!\n"); + printf("But...\n"); + + double difference = fabs(f - 1.000000); + + if (difference < 0.00001) { + printf("f is close enough to 1.000000 (off by %.24f)\n", difference); + /* yes? */ + } + + return 0; +} + +/* vim:filetype=c:fileencoding=utf-8 + */