Re[4]: Ищу BCD библиотеку
От: wtom  
Дата: 18.12.09 12:08
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, wtom, Вы писали:


A>>>причем здесь BCD?

A>>>Посмотри libgmp

W>>Учитывая, что первая и основная target-платформа проекта Windows, меня в описании libgmp смутила такая фраза:

It also is known to work on Windoze in 32-bit mode.


W>>не охота проблем, связанных с отсутствием достаточной поддержки "Windoze" )))
W>>Но, видимо, придется ее попробовать... Спасибо )

N>Вообще-то Вам лучше более качественно определиться с задачей. Для бухгалтерии и других финансовых задач принципиально не BCD (хотя с ним удобнее), а точное представление с выбранной точностью — то есть представление с фиксированной точкой. Этого можно достичь десятичным float'ом (где он есть), но лучше всё-таки явно фиксированной точкой — тогда ещё и легко определить переполнение сразу в момент вычисления.


N>И если не гнаться за BCD, то может хватить и простого враппера вокруг 64-битных целых: отведя 3 цифры на доли копейки, Вы получите 12 цифр на рубли (то есть до триллиона оных), по-моему, практически вполне достаточно А если нет — из той же libgmp можно взять подсистему mpz (в целых числах) с произвольной точностью.


N>Далее, про "Windoze on 32-bit" — тут совершенно нет проблемы в названии кроме того факта, что она там неплотно используется (в отличие от Unix, где требуется несколькими стандартными продуктами для криптографии). И отзывов мало. Но попробовать безусловно можно — она сделана хорошо, есть тесты работы, и, думаю, максимумом проблем для 64 бит будет LLP64 в отличие от привычной для Unix LP64. Это лечится достаточно просто.


N>Ну или напишите сами длинная арифметика — задачка уровня курсовой 1-го курса или лабораторной работы 4-го.


Да в итоге обошлись оберткой над int64, как выше был пост. Количество бабла хранится в int64 с точностью до цента, цены и share-сы в double. Результат вполне устраивает )

libgmp последней версии под Windows мне в приемлемом варианте собрать не получилось. Есть VS проекты для более ранней версии, но в ней нет C++ обертки. Для свежей версии таких проектов не нашел. Мог бы, конечно, запариться и сам написать, но она по-любому не решает задачи. В libgmp такие же проблемы с представлением десятичных дробей, как и у double. Так что пусть ее.
Не стоит переходить реку вброд, если известно только, что ее глубина (средняя) 4 фута.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.