Как я устанавливаю точность с плавающей точкой в Perl?

Мне нравится, какие tpqf, сказанные, а скорее, чем отключение учетной записи, когда обман обнаружен, реализуют ловушку поэтому каждый раз, когда они входят в систему, они видят свои взломанные очки и никогда не подозревают, что были отмечены как сообщение-розыгрыш. Google для "Сообщения-розыгрыша phpBB MOD" и Вы будете видеть оригинальный подход.

15
задан Peter Mortensen 17 November 2017 в 22:13
поделиться

2 ответа

Это невозможно изменить глобально.

Если это просто для отображения, тогда используйте sprintf ("%. 3f", $ value); .

Для математических целей используйте (int (($ value * 1000.0) + 0.5) / 1000,0) . Это сработает для положительных чисел. Однако вам нужно будет изменить его для работы с отрицательными числами.

15
ответ дан 1 December 2019 в 01:11
поделиться

Используйте Math :: BigFloat или bignum :

use Math::BigFloat;
Math::BigFloat->precision(-3);

my $x = Math::BigFloat->new(1.123566);
my $y = Math::BigFloat->new(3.333333);

Или с bignum вместо этого выполните:

use bignum ( p => -3 );
my $x = 1.123566;
my $y = 3.333333;

Затем в оба случая:

say $x;       # => 1.124
say $y;       # => 3.333
say $x + $y;  # => 4.457
19
ответ дан 1 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

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