使用perl打印浮动数字

时间:2015-05-07 11:17:35

标签: perl

我有以下"帮助"子程序:

higherKey()

变量sub help { print <<HELP; useage: the script will apply a constant set of changes on the code files Flags: -dest: The output directory, -source: The path to the diractory where the source code is. -ver: The version of the code (default = $version) HELP exit 0; } 设置为$version 但是当我调用子程序时,它只打印:

3.0

,即它不打印点和零,

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

将版本指定为字符串:

my $version = "3.0";

或者使用printf指定打印数值时的精度。

printf ( "%.1f", $version );

或者,如果你真的想让它变得有趣,那就让$version成为一个doublevar,它在字符串和数字上下文中给出不同的值。 (这是炫耀 - 它可能是可维护代码的坏主意)。

use strict;
use warnings;
use Scalar::Util qw ( dualvar );

my $version = dualvar ( 3.0,  "three point zero" );

print $version,"\n";
if ( $version >= 3.0 ) { print "3.0 or higher\n" };

如果将标量值指定为数字,则perl将其转换为数字。 3.0 = 3.00 = 3所以它默认以最低精度打印。这就是你遇到这个问题的原因。

您可能会发现查看version也很有用。

答案 1 :(得分:1)

修复帮助字符串中 目录 的拼写。

使用printf

sub help {
    printf(<<HELP, $version);
useage:  the script will apply a constant set of changes on the code files

Flags:
   -dest:   The output directory,
   -source: The path to the directory where the source code is.
   -ver:    The version of the code (default = %.1f)
HELP
    exit 0;
}

输出:

useage:  the script will apply a constant set of changes on the code files

Flags:
   -dest:   The output directory,
   -source: The path to the diractory where the source code is.
   -ver:    The version of the code (default = 3.0)