Как Вы вычисляете отделение и модификацию чисел с плавающей точкой?

>| почти такой же, как >, за исключением того, что он перезапишет существующий обычный файл.

Вы увидите разницу, только если у вас есть:

set -o noclobber

В противном случае >| и > будут перезаписывать существующий обычный файл.

11
задан mskfisher 10 May 2012 в 18:51
поделиться

2 ответа

Данный a = qd + r, существует неоднозначность при вычислении остатка для отрицательных величин d.

Например:

Выражение −42 ÷ −5, может быть выражен как любой как: −42 = 9×(−5) + 3 или −42 = 8×(−5) + (−2).

Таким образом, остаток затем или 3 или −2.

Для большего количества информации: Wikipedia:Remainder "Неравенство, удовлетворенное остатком"

Кроме того, вывод в случае отрицательных чисел в модификации / отделение является зависящим от реализации на языках программного обеспечения. Посмотрите Википедию: операция По модулю (смотрят на таблицу на праве),

8
ответ дан 3 December 2019 в 04:54
поделиться

В заголовке задается один вопрос, тело другой. Для ответа на вопрос заголовка, так же, как в C, оператор % является целочисленным модулем, но существует библиотечная подпрограмма "fmod", это - модуль с плавающей точкой.

use POSIX "fmod";

sub foo {
    my $n1 = shift;
    my $n2 = shift;
    print "perl's fmod=" . fmod($n1,$n2), "\n";
    my $res = $n1 / $n2;
    my $t = int($res);
    print "my div=$t", "\n";
    $res = $res - $t;
    $res = $res * $n2;
    print "my mod=" . $res . "\n\n";
}

foo( 3044.952963, 7.1 );
foo( 3044.952963, -7.1 );
foo( -3044.952963, 7.1 );
foo( -3044.952963, -7.1 );

дает

perl's fmod=6.15296300000033
my div=428
my mod=6.15296300000033

perl's fmod=6.15296300000033
my div=-428
my mod=6.15296300000033

perl's fmod=-6.15296300000033
my div=-428
my mod=-6.15296300000033

perl's fmod=-6.15296300000033
my div=428
my mod=-6.15296300000033
15
ответ дан 3 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: