in reply to Using printf with %.1f
perldoc -f printf printf FILEHANDLE FORMAT, LIST printf FORMAT, LIST Equivalent to "print FILEHANDLE sprintf(FORMAT, LIST)", ex +cept that "$\" (the output record separator) is not appended. T +he first argument of the list will be interpreted as the "pri +ntf" format. If "use locale" is in effect, the character used f +or the decimal point in formatted real numbers is affected by the LC_NUMERIC locale. See the perllocale manpage. Don't fall into the trap of using a "printf" when a simple "print" would do. The "print" is more efficient and less e +rror prone. perldoc perllocale Category LC_NUMERIC: Numeric Formatting In the scope of use locale, Perl obeys the LC_NUMERIC locale informati +on, which controls an application's idea of how numbers should be for +matted for human readability by the printf(), sprintf(), and write() +functions. String-to-numeric conversion by the POSIX::strtod() functi +on is also affected. In most implementations the only effect is to ch +ange the character used for the decimal point--perhaps from '.' to ', +'. These functions aren't aware of such niceties as thousands separat +ion and so on. (See The localeconv function if you care about these t +hings.) Output produced by print() is also affected by the current locale: it +depends on whether use locale or no locale is in effect, and correspo +nds to what you'd get from printf() in the ``C'' locale. The same is +true for Perl's internal conversions between numeric and string forma +ts: use POSIX qw(strtod); use locale; $n = 5/2; # Assign numeric 2.5 to $n $a = " $n"; # Locale-dependent conversion to string print "half five is $n\n"; # Locale-dependent output printf "half five is %g\n", $n; # Locale-dependent output print "DECIMAL POINT IS COMMA\n" if $n == (strtod("2,5"))[0]; # Locale-dependent conversion
___crazyinsomniac_______________________________________
Disclaimer: Don't blame. It came from inside the void
perl -e "$q=$_;map({chr unpack qq;H*;,$_}split(q;;,q*H*));print;$q/$q;"
|
|---|