Вы не должны преобразовывать его вообще:
% perl -e 'print "5.45" + 0.1;'
5.55
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 заботится больше о глаголах, чем это делает существительные.
Вы пытаетесь сделать что-то, и это не работает?
Perl действительно только имеет три типа: скаляры, массивы и хеши. И даже что различие является спорным.;) способ, которым рассматривают каждую переменную, зависит от того, что Вы делаете с ним:
% perl -e "print 5.4 . 3.4;"
5.43.4
% perl -e "print '5.4' + '3.4';"
8.8
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
Насколько я понимаю, int () не предназначен как функция «приведения» для обозначения типа данных, он просто (ab) используется здесь для определения контекста как арифметического. Я (ab) использовал (0 + $ val) в прошлом, чтобы гарантировать, что $ val обрабатывается как число.