В следующем примере я пытаюсь сохранить десятичную часть и первые 2 дробные части, а третий, если она больше, чем 0.
Так +12,37500000000392 следует заменить на 12.375Не удается заменить с помощью групп захвата?
#!/usr/bin/perl
use strict;
use warnings;
my $price = 12.37500000000392;
print "price = $price \n";
$price =~ s/([0-9]+)(\.[1-9]{2}[1-9]?)\d*?/$1$2/;
print "1 = $1 \n";
print "2 = $2 \n";
print "price = $price \n";
Но это не Работа.
Это показывает, что $1
является 12
и $2
является .375
но цена в конце концов, до сих пор печатаются 12.37500000000392
в последнем print
заявления
Это проблема X/Y? Почему бы вам просто не сказать '$ price = sprintf"% g ", $ price'? – mob