Как я могу преобразовать строку в число в Perl?

82
задан Vadim Kotov 26 October 2019 в 10:20
поделиться

5 ответов

Вы не должны преобразовывать его вообще:

% perl -e 'print "5.45" + 0.1;'
5.55
89
ответ дан Alnitak 24 November 2019 в 09:04
поделиться

Perl является основанным на контексте языком. Это не делает своей работы согласно данным, которые Вы даете ему. Вместо этого это выясняет, как рассматривать данные на основе операторов, которые Вы используете и контекст, в котором Вы используете их. Если Вы делаете виды чисел вещей, Вы получаете числа:

# numeric addition with strings:
my $sum = '5.45' + '0.01'; # 5.46

, Если Вы делаете строковые виды вещей, Вы получаете строки:

# string replication with numbers:
my $string = ( 45/2 ) x 4; # "22.522.522.522.5"

Perl главным образом выясняет, что сделать, и это главным образом правильно. Другой способ сказать то же самое состоит в том, что Perl заботится больше о глаголах, чем это делает существительные.

Вы пытаетесь сделать что-то, и это не работает?

40
ответ дан Rop 24 November 2019 в 09:04
поделиться

Perl действительно только имеет три типа: скаляры, массивы и хеши. И даже что различие является спорным.;) способ, которым рассматривают каждую переменную, зависит от того, что Вы делаете с ним:

% perl -e "print 5.4 . 3.4;"
5.43.4


% perl -e "print '5.4' + '3.4';"
8.8
3
ответ дан brian d foy 24 November 2019 в 09:04
поделиться

Google привел меня сюда, когда я искал по тому же вопросу, который задал Фил (сортировка с плавающей запятой), поэтому я решил, что стоит опубликовать ответ, несмотря на то, что тема была своего рода Старый. Я новичок в Perl, и все еще не понимаю, как он говорит: «Perl больше заботится о глаголах, чем о существительных». выше действительно попадает в точку. Вам не нужно преобразовывать строки в числа с плавающей запятой перед применением сортировки. Вам нужно указать сортировке, чтобы значения сортировались как числа, а не как строки. т.е.

my @foo = ('1.2', '3.4', '2.1', '4.6');
my @foo_sort = sort {$a <=> $b} @foo;

См. http://perldoc.perl.org/functions/sort.html для получения дополнительной информации о sort

10
ответ дан 24 November 2019 в 09:04
поделиться

Насколько я понимаю, int () не предназначен как функция «приведения» для обозначения типа данных, он просто (ab) используется здесь для определения контекста как арифметического. Я (ab) использовал (0 + $ val) в прошлом, чтобы гарантировать, что $ val обрабатывается как число.

8
ответ дан 24 November 2019 в 09:04
поделиться
Другие вопросы по тегам:

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