LINUX.ORG.RU

c++ gcc Qt - денежный тип данных


0

1

Существует ли денежный тип данных. Кто нибудь реализовывал класс денежного типа, что бы работать с ним как с float? Не охото заморачиваться с int64

реализовал тип данных QCurrency. Кто поопытнее может проверить на быдлокодство? http://rghost.ru/36989873

★★★

Последнее исправление: pozitiffcat (всего исправлений: 1)
Ответ на: комментарий от Insomnium

К вашему вопросу «зачем делать две переменных» :)

invy ★★★★★
()

libgmp, как тут уже наверняка посоветовали

mannaz
()
class Money
{
    Money(int roubles, int copecks)
	: amount(roubles * 100 + copecks)
    {
    }
    // other constructors
    // ...

    Money operator + (const Money&) const;
    Money operator - (const Money&) const;

    // other arithmetic, comparison operators
    // ...

    std::string to_string() const;
    int get_roubles() const;
    int get_copecks() const;

private:
    int amount;
};
theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne
    int get_roubles() const;
    int get_copecks() const;

Говно. Мало того, что привязка к конкретной валюте, так ещё и по-дебильному оформленная

anonymous
()
Ответ на: комментарий от anonymous

привязка к конкретной валюте

ТЗ в студию тогда уж =)

А то вы тут нареализуете сейчас все валюты мира, абстракцию над раковинами папуасов и конвертацию девственниц в количество быков...

deadman ★★
()

Заведи отдельный класс, который будет простой оберткой над int64, хранящей деньги в копейках. Назови как хочешь, хоть QBablo, но главное, чтобы не было видно, что по факту ты работаешь с int64. Желательно, чтобы в этом классе не было никак отражено, что ты работаешь именно с рублями. Вдруг потребуется другая валюта. Если потом возможностей int64 будет не хватать, переделаешь класс, а весь остальной код останется неизменным.

pathfinder ★★★★
()
Ответ на: комментарий от pathfinder

Сейчас так и сделано, и я понял, что это не костыльно. Всем спасибо. Зря тему создавал и всех мучал ))

pozitiffcat ★★★
() автор топика

Реализация зависит от того, какая тебе нужна точность. Иными словами, может ли число копеек быть дробным (например, такая сумма: 123,456 рублей)? Если в принципе не может быть или такие суммы округляются до сотых, то нужно тупо переводить в копейки и хранить в инте.

Если значение может быть дробным, да ещё неизвестно до какого знака, то я бы запилил класс для работы с дробями (Decimal, Fraction, wuteva), тем более, что в плюсах можно переопределить арифметические операции для свои нужд.

И второе: нафейхоа ты обозвал свой класс с префиксом Q? Какой смысл нарушать соглашения об именовании на ровном месте?

Apple-ch ★★
()
Ответ на: комментарий от Harald

Как ты себе это представляешь? :)

Представляю что это будет долго, больно и мучительно! Подробностей раскрывать не стану, но намекну, что внутри человеческого тела как бы электролит... Дело за малым: надыбать источник питания с низким собственным сопротивлением.

Macil ★★★★★
()
Ответ на: комментарий от Macil

а ничего, что сопроивление человека обычно около ~1 КОм и выше бывает? Что ты подразумеваешь под «низким напряжением» ? :)

Harald ★★★★★
()
Ответ на: комментарий от Harald

а ничего, что сопроивление человека обычно около ~1 КОм и выше бывает?

Это сопротивление кожи. А внутри... Внутри - растворчики солей. Так что нужно всего лишь слегка изменить схему включения человека в цепь, и все будет. ;)

Что ты подразумеваешь под «низким напряжением»

А ХЗ... Нужно проводить расчеты. Где-то я видел схему такого источника питания... С помощью него один мужичок рисовал занятные фрактальчики в деревяшке. Но за давностью лет не найду уже наверное.

Macil ★★★★★
()

float.. деньги.. откуда вы берётесь

vasily_pupkin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.