Как я могу вставить десятичную точку перед последними тремя цифрами числа?

RFC 2646 говорит:

тип среды текста/Плоскости является наименьшим общим знаменателем интернет-электронной почты со строками не больше, чем 997 символов (условно обычно не больше, чем 80)

, Другой популярный стандарт должен перенестись в 72 символах. Это относится ко времени многих консольных приложений (как РЕДАКТИРОВАНИЕ и много интерфейсов BBS) что отображаемый текст в ASCII "окно" включая границу и полосу прокрутки, позволяя немного меньше чем 80 символам быть отображенными.

11
задан ThisSuitIsBlackNot 27 January 2016 в 18:40
поделиться

4 ответа

$num =~ s/(\d{3})$/.$1/

В ней говорится: возьмите блок из трех цифр (который должен быть привязан к КОНЦУ строки) и замените их с помощью ". ", за которым следует все, что было только что сопоставлено.

10
ответ дан 3 December 2019 в 00:41
поделиться

И еще один способ развлечься; -)

my $num_3dec = sprintf '%.3f', $num / 1000;
44
ответ дан 3 December 2019 в 00:41
поделиться

Кто-нибудь в гольф?

substr $num,-3,0,'.';
2
ответ дан 3 December 2019 в 00:41
поделиться

Вот еще одно решение для удовольствия:

В Perl substr () может быть lvalue, которое может помочь в вашем случае.

substr ($num , -3 , 0) = '.';

добавит точку перед последним три цифры.

Вы также можете использовать версию substr с четырьмя аргументами (как указано в комментариях), чтобы получить тот же эффект:

substr( $num, -3, 0, '.' );

Я надеюсь, что это более элегантно / читабельно, чем решение с регулярным выражением, но я уверен он отключит использование любого, кто не привык к substr (), как lvalue.

14
ответ дан 3 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: