Re: Wierd issue with printf and DBD::Pg
[email protected] ("Peter Vanroose") Mon, 01 Oct 2018 21:12:01 +0200
| Newsgroups | perl.dbi.users |
|---|---|
| Message-ID | <1538421121562.94142.8324@webmail10> |
Use sprintf instead of printf. -- Peter Vanroose. On 1 october 2018 12:13 Mike Martin <<[email protected]>> wrote: > If I use printf to round a numeric value before inserting into postgres table it is altered to 1 rather than the value when it is put into a table > > example > > CREATE TABLE public.chksize > ( > size numeric(10,2), #does not matter what field type > path1 character varying COLLATE pg_catalog."default" > ) > > this creates a value of 1 for every value > > > my $ins=$dbh->prepare("INSERT into chksize (size,path1) VALUES (?,?) "); > open my $list ,'chksizer.txt'; > no strict 'refs'; > my @list=(<$list>); > foreach my $k (@list){ > chomp $k; > my ($size,$path)=split /,/,$k; > my $size1=printf('%.1f',$size/(1024*1024)); > $ins->bind_param(1,$size1); > $ins->bind_param(2,$path); > $ins->execute; > } > > without printf this inserts proper value > > > my $ins=$dbh->prepare("INSERT into chksize (size,path1) VALUES (?,?) "); > open my $list ,'chksizer.txt'; > no strict 'refs'; > my @list=(<$list>); > foreach my $k (@list){ > chomp $k; > my ($size,$path)=split /,/,$k; > my $size1=$size/(1024*1024); > $ins->bind_param(1,$size1); > $ins->bind_param(2,$path); > $ins->execute; > } > > Any ideas what is happening here? > > thanks > > Mike > > >