Мне нужно было сделать что-то немного другое: обнулить значение с плавающей запятой и получить точную длину.
В моем случае мне нужно ровно 12 байтов, включая десятичную точку. Это немного сложнее, чем у вас выше. Вот на тот случай, если это кому-нибудь понадобится:
Скажем, $ inputVal - это строка, передаваемая откуда-то со значением типа 1001.1 . Обратите внимание, что для надежной работы должно быть не более 12 символов
# This will give us extra zeros, but the string may be too long
my $floatVal = sprintf('%*.*f', 12, 12, $inputValue);
# This will remove any extra zeros
$result = substr($floatVal, 0, 12);