Skip to content

printf %a mishandles zero precision #15502

Description

@p5pRT

Migrated from rt.perl.org#128888 (status was 'resolved')

Searchable as RT128888$

Activity

  1. p5pRT commented on Aug 10, 2016

    @p5pRT
    Author

    From zefram@fysh.org

    Created by zefram@fysh.org

    $ perl -lwe 'printf "%a\n", 1.03125'
    0x1.08p+0
    $ perl -lwe 'printf "%.1a\n", 1.03125'
    0x1.0p+0
    $ perl -lwe 'printf "%.0a\n", 1.03125'
    0x1.08p+0

    The last of the above is incorrect​: the output should be "0x1p+0", with
    zero fractional digits. It's instead acting as if the precision were
    not specified. The corresponding decimal %e works fine​:

    $ perl -lwe 'printf "%e\n", 1.04'
    1.040000e+00
    $ perl -lwe 'printf "%.1e\n", 1.04'
    1.0e+00
    $ perl -lwe 'printf "%.0e\n", 1.04'
    1e+00

    Perl Info
    
    Flags:
        category=core
        severity=low
    
    Site configuration information for perl 5.24.0:
    
    Configured by zefram at Mon May  9 19:42:55 BST 2016.
    
    Summary of my perl5 (revision 5 version 24 subversion 0) configuration:
       
      Platform:
        osname=linux, osvers=3.16.0-4-amd64, archname=x86_64-linux-thread-multi
        uname='linux barba.rous.org 3.16.0-4-amd64 #1 smp debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 gnulinux '
        config_args='-des -Dprefix=/home/zefram/usr/perl/perl_install/perl-5.24.0-i64-f52 -Duselargefiles -Dusethreads -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dusedevel -Uversiononly -Ui_db'
        hint=recommended, useposix=true, d_sigaction=define
        useithreads=define, usemultiplicity=define
        use64bitint=define, use64bitall=define, uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
      Compiler:
        cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2',
        optimize='-O2',
        cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
        ccversion='', gccversion='4.9.2', gccosandvers=''
        intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678, doublekind=3
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16, longdblkind=3
        ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=8, prototype=define
      Linker and Libraries:
        ld='cc', ldflags =' -fstack-protector-strong -L/usr/local/lib'
        libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
        libs=-lpthread -lnsl -ldb -ldl -lm -lcrypt -lutil -lc
        perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
        libc=libc-2.19.so, so=so, useshrplib=true, libperl=libperl.so
        gnulibc_version='2.19'
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/home/zefram/usr/perl/perl_install/perl-5.24.0-i64-f52/lib/5.24.0/x86_64-linux-thread-multi/CORE'
        cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'
    
    
    
    @INC for perl 5.24.0:
        /home/zefram/usr/perl/perl_install/perl-5.24.0-i64-f52/lib/site_perl/5.24.0/x86_64-linux-thread-multi
        /home/zefram/usr/perl/perl_install/perl-5.24.0-i64-f52/lib/site_perl/5.24.0
        /home/zefram/usr/perl/perl_install/perl-5.24.0-i64-f52/lib/5.24.0/x86_64-linux-thread-multi
        /home/zefram/usr/perl/perl_install/perl-5.24.0-i64-f52/lib/5.24.0
        .
    
    
    Environment for perl 5.24.0:
        HOME=/home/zefram
        LANG (unset)
        LANGUAGE (unset)
        LD_LIBRARY_PATH (unset)
        LOGDIR (unset)
        PATH=/home/zefram/usr/perl/perl_install/perl-5.24.0-i64-f52/bin:/home/zefram/usr/perl/util:/home/zefram/pub/x86_64-unknown-linux-gnu/bin:/home/zefram/pub/common/bin:/usr/bin:/bin:/usr/local/bin:/usr/games
        PERL_BADLANG (unset)
        SHELL=/usr/bin/zsh
    
    
  2. p5pRT commented on Aug 23, 2016

    @p5pRT
    Author

    From @jhi

    Marking resolved until proven otherwise.

  3. p5pRT commented on Aug 23, 2016

    @p5pRT
    Author

    The RT System itself - Status changed from 'new' to 'open'

  4. p5pRT commented on Aug 23, 2016

    @p5pRT
    Author

    @jhi - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions