Re: Cast double precision to integer & check for overflow

From: Jasen Betts <jasen(at)xnet(dot)co(dot)nz>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Cast double precision to integer & check for overflow
Date: 2013-01-27 08:33:17
Message-ID: ke2ood$o5o$3@gonzo.reversiblemaps.ath.cx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 2013-01-26, Gavan Schneider <pg-gts(at)snkmail(dot)com> wrote:
> On Saturday, January 26, 2013 at 08:13, Ian Pilcher wrote:
>
>>I need to cast a double precision into an integer, and I want to check
>>that the value will actually fit (modulo rounding).
>>
>>Coming from a C/Java background, this seems like something that should
>>be utterly trivial. In my searching, however, I can't seem to find any
>>SQL equivalent of INT_MAX, Integer.MAX_VALUE, etc.
>>
> So far I haven't seen such defined constants but am happy to
> share the RTFM moment. :-)
>
> I am sure you have already found this:
><http://www.postgresql.org/docs/9.2/static/datatype-numeric.html#DATATYPE-NUMERIC-TABLE>
>
>>Do I have to hard-code this value?
>>
> Or cast double to both numeric(13000,0) and integer and compare
> them. A stored function could encapsulate this along with
> raising the exception when required. If design is still fluid
> and performance allows the numeric type could do the job without
> fear of overflow.

there's no need to cast and compare. if the number doesn't fit the cast will
fail with an exception.

--
⚂⚃ 100% natural

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Jasen Betts 2013-01-27 09:25:55 Re: Restore 1 Table from pg_dumpall?
Previous Message Scott Marlowe 2013-01-27 08:07:06 Re: noobie question