Как я могу положить валюту с запятыми в C? - PullRequest
0 голосов
/ 23 февраля 2019

Я хочу отформатировать двойной или длинный двойной для валюты в C. Я хотел бы поставить знак доллара в начале, отрицательный, если необходимо, запятую итерацию каждую третью цифру перед запятой и точку непосредственно перед запятой,До сих пор я печатал числа примерно так:

printf("Please enter an amount: $%.2Lf\n", money);

, который возвращает что-то вроде

Please enter an amount: $123456789.00

Числа должны выглядеть следующим образом ...

$123,456,789.00
$1,234.56
$123.45

Мне нужно, чтобы он работал с любым номером.Было бы полезно, если бы ответы были реальным кодом, потому что я относительно новичок в кодировании (первокурсник в колледже), но я знаю, что это может показаться легким выходом, поэтому, если кто-то захочет объяснить это мне и помочь мне, я был бы очень признателенэто тоже.Этот вопрос был задан кем-то до меня на этом сайте, но мне нужна серьезная помощь.

Спасибо!

1 Ответ

0 голосов
/ 23 февраля 2019

Может быть, этот фрагмент кода поможет вам.Он использует локали для ваших целей.

#include <stdio.h>
#include <locale.h>

int main()
{
    long double money;
    setlocale(LC_NUMERIC, "en_US.UTF-8"); // Use thousands separators

    printf("How much? ");
    scanf("%Lf", &money);
    printf("Formatted: $%'.2Lf\n", money); // Notice the ' character
}

Локали - это в значительной степени то, на что они похожи.Они обрабатывают локальные стандарты, такие как формат времени по умолчанию.Когда вы используете setlocal, вы отправляете категорию и локаль в качестве аргумента.Это следующие категории:

  • LC_ALL выбирает всю локаль C
  • LC_COLLATE выбирает категорию сортировки локали C
  • LC_CTYPE выбирает категорию классификации символов Clocale
  • LC_MONETARY выбирает категорию денежного форматирования языкового стандарта C
  • LC_NUMERIC выбирает числовую категорию форматирования языкового стандарта C
  • LC_TIME выбирает категорию форматирования времени языкового стандарта C

Есть много разных локалей.en_US.UTF-8 является одним из них.

https://en.cppreference.com/w/c/locale/LC_categories

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...