Perl вопрос об операторе по модулю

Почему первый пример печатает неправильный результат?

perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
6
задан NullUserException 16 September 2010 в 14:07
поделиться

2 ответа

Это из-за арифметики с плавающей запятой.

print $x = int(100*1.15);

Дает 114.

9
ответ дан 8 December 2019 в 17:18
поделиться

Округление. Имейте в виду, что компьютеры не могут точно представлять фактические десятичные разряды - они являются приблизительными. На моем компьютере perl -le 'print $ x = (100 * 1.15) -115' дает результат -1.4210854715202e-14 , что означает, что 100 * 1.15 почти, но не совсем, 115.

5
ответ дан 8 December 2019 в 17:18
поделиться
Другие вопросы по тегам:

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