Решение проще, чем вы думаете.
Вместо использования %g
используйте %f
, и это приведет к поведению, которое вы ищете. %f
всегда будет выводить ваше плавающее десятичное число в " фиксированной десятичной записи ".
Что говорится в документации %g
против %f
?
Как вы можете заметить в приведенной ниже таблице, %g
приведет к тому же значению, что и %f
или %e
(при необходимости).
Если вы хотите принудительно использовать фиксированную десятичную запись используйте соответствующий идентификатор формата, который в данном случае равен %f
.
sprintf - perldoc.perl.org
%% a percent sign
%c a character with the given number
%s a string
%d a signed integer, in decimal
%u an unsigned integer, in decimal
%o an unsigned integer, in octal
%x an unsigned integer, in hexadecimal
%e a floating-point number, in scientific notation
%f a floating-point number, in fixed decimal notation
%g a floating-point number, in %e or %f notation
А как насчет TIMTOWTDI; Разве мы не пишем Perl?
Да, как всегда, есть несколько способов сделать это.
Если вы просто хотите обрезать завершающие нули десятичной точки из строки , вы можете использовать регулярное выражение, например ниже.
$number = "123000.321000";
$number =~ s/(\.\d+?)0+$/$1/;
$number # is now "12300.321"
Помните, что значения с плавающей точкой в perl не имеют конечных десятичных дробей, если только вы не имеете дело со строкой. С этим сказал; строка не является числом, даже если она может быть явно и неявно преобразована в единицу.