Use sprintf instead of printf.

-- Peter Vanroose.


On 1 october 2018 12:13 Mike Martin <<redt...@gmail.com>> 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
> 
>
>

Reply via email to