Perl int函数和填充零 我有下面的Perl函数来显示最多两个小数点。当输入值为2.01时,它不工作,它将输出为2而不是2.01。我不知道为什么是四舍五入

Perl int函数和填充零 我有下面的Perl函数来显示最多两个小数点。当输入值为2.01时,它不工作,它将输出为2而不是2.01。我不知道为什么是四舍五入,perl,Perl,我将输出写入一个文件,而不是printf,但它仍然将output1作为2 my $ramount = 2.01; $ramount = int($ramount*100)/100; printf "output1: $ramount"; 如果我有像.2、.23、.2345、1、23、23.1和9这样的值,我可以使用什么函数来填充零,以便它显示0.2、0.23、0.2345、1、23、23.1和9 我认为这一顺序将回答您的问题: DB<1> $a=2.01

我将输出写入一个文件,而不是printf,但它仍然将output1作为2

    my $ramount = 2.01;
    $ramount = int($ramount*100)/100;
    printf "output1: $ramount";
  • 如果我有像.2、.23、.2345、1、23、23.1和9这样的值,我可以使用什么函数来填充零,以便它显示0.2、0.23、0.2345、1、23、23.1和9

  • 我认为这一顺序将回答您的问题:

      DB<1> $a=2.01
    
      DB<2> p $a
    2.01
      DB<3> printf "%20.10f\n", $a
            2.0100000000
    
      DB<4> printf "%20.16f\n", $a
      2.0099999999999998
    
      DB<5> printf "%20.16f\n", ($a*100)
    200.9999999999999716
    
      DB<6> printf "%20.16f\n", ($a*100)/100
      2.0099999999999998
    
      DB<7> printf "%20.16f\n", int($a*100)
    200.0000000000000000
    
      DB<8> printf "%20.16f\n", int($a*100)/100
      2.0000000000000000
    
      DB<9>
    
    格式中的前导零将
    printf
    (或
    sprintf
    )告知带零的左键盘。

    来自:

    为什么int()被破坏了? 你的工作很可能很好。正是这些数字 不是你想的那样。首先,看看你的答案

    比如说这个,

    print int(0.6/0.2-2), "\n";
    
    大多数计算机会打印0而不是1,因为即使如此简单 0.6和0.2这两个数字不能用浮点精确表示 数字。你在上面所说的“三”更像是 2.999999999559


    另外,必须注意,int()是一种截断操作,而不是舍入操作。I=int(f+0.5)是显式舍入解。
    print int(0.6/0.2-2), "\n";