Как лучше всего перейти на валютный формат? - PullRequest
1 голос
/ 02 февраля 2009

У меня есть список значений, таких как «12000», «12345», «123456», которые необходимо преобразовать в валюту («120.00», «123.45», «1234.56»). Единственный известный мне способ - преобразовать значение в строку, скопировать первые символы strlen () - 2 в одну строку (доллары), а оставшиеся две цифры - в другую строку (центы), а затем записать их следующим образом: *

printf("%s.%s", dollars, cents);

Ответы [ 3 ]

6 голосов
/ 02 февраля 2009
printf("$%.2f", value/100);
3 голосов
/ 03 февраля 2009

Не используйте поплавки для хранения или представления денежных сумм. Используйте длинные (если вам нужно больше 4 миллиардов центов, используйте длинные). Обычно хорошей идеей является представление валюты в минимальной используемой единице, например, используйте 10000 для представления 100 евро). Тогда правильный способ форматирования этих значений (при условии 100 центов к евро или доллару):

printf( "%d.%02d", value/100, value%100);

Надеюсь, это имеет смысл ...

Расчеты с валютными значениями - сложная тема, но вы не можете пойти далеко не так, если вы всегда стремитесь получить округленный ответ до ближайшей денежной единицы (например, цент) и всегда убедитесь, что ошибки округления рассчитаны для (например, разделите 1 доллар на три части: 33 + 33 + 34 или 33 + 33 + 33 + 1).

0 голосов
/ 06 февраля 2009

для префикса значений менее $ 1,00 с 0, используйте:

printf ("$% 0.2f", значение / 100.0);

Это приведет к $ 0,25, если значение = 25

...