2013-03-21 2 views
0

Я пишу приложение в C (под Linux), которое занимается ценами. Программа получает ценовые котировки в виде целых пар (m, e), так что полученная цена просто равна «m * 10^e».Работа с десятичными знаками в C

Я хотел бы иметь возможность как управлять ценами с помощью арифметических операций, так и использовать «printf»-подобные функции для форматирования вывода. Я должен сделать это довольно быстро.

Что такое самый быстрый способ совершения десятичных знаков в C? Я читал о Decimal Floats in gcc, но их отсутствие поддержки libc делает их невозможными для использования стандартным способом. Спасибо.

+0

Что означает «довольно быстро»? Это, по-видимому, на процессоре с несколькими гигагерцами, сколько операций по таким ценам вам приходится иметь дело в секунду? Если это не в миллионах, вы, вероятно, не должны беспокоиться о производительности прямо сейчас. – unwind

+1

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

+0

Чтобы быть более конкретным, я буду в порядке, если я смогу справиться с ними в «двойных» скоростях. Если это можно сделать элегантным способом, это будет здорово. – TruLa

ответ

1

Вы можете, конечно, использовать библиотеку, такую ​​как GMP, она поддерживает произвольную точность с плавающей точкой, чтобы она могла иметь дело с вашими данными.

1

Если ваши цены всегда не превышают 2 десятичных разряда, вы можете просто использовать целые числа для представления количества центов. printf также прост с

printf("%d.%02d", price/100, price%100); 
Смежные вопросы