Re: somebody could explain this?

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Cristian Prieto <cristian(at)clickdiario(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: somebody could explain this?
Date: 2005-11-04 16:45:31
Message-ID: 436B902B.3020905@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


Classic behaviour, which has nothing to do with postgres. Try the
program below to see the same effect. You probably should be using a
rounding function to see what you seem to expect.

cheers

andrew

#include <stdio.h>

main()
{
double x[] = { 0.1, 0.11, 0.12, 0.13, 0.14, 0.15 };
int i,n;
for (i=0 ; i < 6; i++)
{
n = x[i] * 100;
printf("%d\n",n);
}

}

Cristian Prieto wrote:

>Hello, I'm using PostgreSQL 8.0.4 in Fedora Core 3, right now I'm learning a
>little about the postgresql internals and the way some kind of SPs could be
>written in c language; I found something really weird and I cannot explain
>to me this behavior:
>
>#include "postgres.h"
>#include "fmgr.h"
>
>PG_FUNCTION_INFO_V1(test);
>
>Datum
>repeat_item(PG_FUNCTION_ARGS)
>{
> int num_times;
>
> num_times = PG_GETARG_FLOAT8(0) * 100;
> PG_RETURN_INT32(num_times);
>}
>
>
>Inside psql this happens:
>
># Create or replace function test(float) returns integer as 'test.so'
>language 'c' stable;
>
>select test(0.1);
>Returns 10
>
>Select test(0.11);
>Returns 11
>
>Select test(0.12)
>Returns 11
>
>Select test(0.13)
>Returns 13
>
>Select test(0.14)
>Returns 14
>
>Select test(0.15)
>Returns 14
>
>
>What Is happening here?
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 9: In versions below 8.0, the planner will ignore your desire to
> choose an index scan if your joining column's datatypes do not
> match
>
>
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Martijn van Oosterhout 2005-11-04 16:45:43 Re: somebody could explain this?
Previous Message Csaba Nagy 2005-11-04 16:31:20 Re: somebody could explain this?