Обсуждение: Rounding Float Array
Hello,
I have a float array holding geo location information.
geoloc
-----------------------------------
{5.3443133704554,100.29457569122}
{5.3885574294704,100.29601335526}
{3.1654978750403,101.60915851593}
{5.3766154817748,100.31472444534}
{3.1545014704258,101.70036971569}
(5 rows)
Is there an easy way to round all values to 4 decimals.
I can round the individual values and return them seperately but I need to return them as an array.
lat | long
---------+-----------
5.34431 | 100.29458
5.38856 | 100.29601
3.16550 | 101.60916
5.37662 | 100.31472
3.15450 | 101.70037
(5 rows)
Any suggestion is highly appreciated.
Thanks
Alex
On 21/09/15 11:55, Alex Magnum wrote:
> Hello,
>
> I have a float array holding geo location information.
>
> geoloc
> -----------------------------------
> {5.3443133704554,100.29457569122}
> {5.3885574294704,100.29601335526}
> {3.1654978750403,101.60915851593}
> {5.3766154817748,100.31472444534}
> {3.1545014704258,101.70036971569}
> (5 rows)
>
> Is there an easy way to round all values to 4 decimals.
>
> I can round the individual values and return them seperately but I need to return them as an array.
>
> lat | long
> ---------+-----------
> 5.34431 | 100.29458
> 5.38856 | 100.29601
> 3.16550 | 101.60916
> 5.37662 | 100.31472
> 3.15450 | 101.70037
> (5 rows)
>
> Any suggestion is highly appreciated.
This might work for you.
Bye,
Chris.
chris=# select * from geoloc;
geoloc
-----------------------------------
{5.3443133704554,100.29457569122}
{5.3885574294704,100.29601335526}
{3.1654978750403,101.60915851593}
{5.3766154817748,100.31472444534}
{3.1545014704258,101.70036971569}
(5 rows)
chris=# select (select array_agg(to_char(x, '999.9999')::float) from unnest(geoloc) as x) from geoloc;;
array_agg
-------------------
{5.3443,100.2946}
{5.3886,100.296}
{3.1655,101.6092}
{5.3766,100.3147}
{3.1545,101.7004}
(5 rows)
Alex Magnum <magnum11200@gmail.com> wrote:
> Hello,
>
> I have a float array holding geo location information.
>
> geoloc
> -----------------------------------
> {5.3443133704554,100.29457569122}
> {5.3885574294704,100.29601335526}
> {3.1654978750403,101.60915851593}
> {5.3766154817748,100.31472444534}
> {3.1545014704258,101.70036971569}
> (5 rows)
>
> Is there an easy way to round all values to 4 decimals.
sure:
test=*# select * from alex ;
geoloc
-----------------------------------
{5.3443133704554,100.29457569122}
{5.3885574294704,100.29601335526}
{3.1654978750403,101.60915851593}
{5.3766154817748,100.31472444534}
(4 rows)
Time: 0,245 ms
test=*# update alex set geoloc = array[round(geoloc[1]::numeric,4),
round(geoloc[2]::numeric,4)];
UPDATE 4
Time: 0,454 ms
test=*# select * from alex ;
geoloc
-------------------
{5.3443,100.2946}
{5.3886,100.296}
{3.1655,101.6092}
{5.3766,100.3147}
(4 rows)
Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknown)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
On Mon, Sep 21, 2015 at 11:55:23AM +0200, Alex Magnum wrote:
> Hello,
>
> I have a float array holding geo location information.
>
> geoloc
> -----------------------------------
> {5.3443133704554,100.29457569122}
> {5.3885574294704,100.29601335526}
> {3.1654978750403,101.60915851593}
> {5.3766154817748,100.31472444534}
> {3.1545014704258,101.70036971569}
> (5 rows)
> Is there an easy way to round all values to 4 decimals.
Sure:
$ select geoloc from alex;
geoloc
-----------------------------------
{5.3443133704554,100.29457569122}
{5.3885574294704,100.29601335526}
{3.1654978750403,101.60915851593}
{5.3766154817748,100.31472444534}
{3.1545014704258,101.70036971569}
(5 rows)
(depesz@[local]:5960) 12:15:46 [depesz]
$ select geoloc::numeric(8,4)[] from alex;
geoloc
-------------------
{5.3443,100.2946}
{5.3886,100.2960}
{3.1655,101.6092}
{5.3766,100.3147}
{3.1545,101.7004}
(5 rows)
depesz
hubert depesz lubaczewski <depesz@depesz.com> wrote:
> > Is there an easy way to round all values to 4 decimals.
>
> Sure:
>
> (depesz@[local]:5960) 12:15:46 [depesz]
> $ select geoloc::numeric(8,4)[] from alex;
> geoloc
> -------------------
> {5.3443,100.2946}
Nice!
Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknown)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
>> Sure:
>>
>> (depesz@[local]:5960) 12:15:46 [depesz]
>> $ select geoloc::numeric(8,4)[] from alex;
>> geoloc
>> -------------------
>> {5.3443,100.2946}
>
> Nice!
Indeed :)
Bye,
Chris.