Чтобы увидеть точные значения для ваших скаляров с плавающей запятой, дайте большую точность sprintf
:
print sprintf("%.60f", 1.1), $/;
print sprintf("%.60f", 2.2), $/;
print sprintf("%.60f", 3.3), $/;
Получаю:
1.100000000000000088817841970012523233890533447265625000000000
2.200000000000000177635683940025046467781066894531250000000000
3.299999999999999822364316059974953532218933105468750000000000
К сожалению, C99% a преобразование, похоже, не работает. perlvar
упоминает устаревшую переменную $#
, которая меняет формат по умолчанию для печати числа, но он ломается, если я даю ему% f, а% g отказывается печатать «несущественные» цифры.