Re: float formating with xx.00
От | Dann Corbit |
---|---|
Тема | Re: float formating with xx.00 |
Дата | |
Msg-id | D90A5A6C612A39408103E6ECDD77B829408B5E@voyager.corporate.connx.com обсуждение исходный текст |
Ответ на | float formating with xx.00 (Mark <map@inter-resa.com>) |
Список | pgsql-general |
/* ** ** Not a surprise, to them that knows: ** */ #include <stdio.h> #include <stdlib.h> #define A_LEN 500 static float foo[A_LEN]; static double bar[A_LEN]; int main (void) { long i; double d; float f; for (i = 0; i < A_LEN; i++) { d = rand () / (rand () + 1.0); d *= d; if (rand () % 2) d = -d; foo[i] = (float) d; bar[i] = d; } f = 0; d = 0; for (i = 0; i < A_LEN; i++) { f += foo[i]; d += bar[i]; } printf ("forward float sum = %.20f\n", f); printf ("forward double sum = %.20f\n", d); f = 0; d = 0; for (i = A_LEN - 1; i >= 0; i--) { f += foo[i]; d += bar[i]; } printf ("backward float sum = %.20f\n", f); printf ("backward double sum = %.20f\n", d); return 0; } /* OpenVMS VAX: $ run foo forward float sum = -6724682.50000000000000000000 forward double sum = -6724682.13690311496610000000 backward float sum = -6724679.50000000000000000000 backward double sum = -6724682.13690311496610000000 OpenVMS Alpha: $ run foo forward float sum = -6724682.50000000000000000000 forward double sum = -6724682.13690311090000000000 backward float sum = -6724679.50000000000000000000 backward double sum = -6724682.13690311370000000000 $ GCC on AMD Athlon: $ ./a forward float sum = -56051.43860578643943881616 forward double sum = -56051.43626179593411507085 backward float sum = -56051.43860578643943881616 backward double sum = -56051.43626179593411507085 MS VC++ 6 on AMD Athlon with /Ox flag: C:\tmp>foo forward float sum = 545785.98050410976000000000 forward double sum = 545786.01145155274000000000 backward float sum = 545785.98050410964000000000 backward double sum = 545786.01145155251000000000 MS VC++ 6 on AMD Athlon with /Op flag (forces memory storage): C:\tmp>foo forward float sum = 545785.93750000000000000000 forward double sum = 545786.01145155274000000000 backward float sum = 545785.56250000000000000000 backward double sum = 545786.01145155251000000000 */
В списке pgsql-general по дате отправления: