Название: [SOLVED] QDoubleSpinBox, double, int Отправлено: serg_hd от Июль 15, 2013, 11:54 В слоте для сигнала valueChanged(), который у QDoubleSpinBox'а, имею:
Код output: money: 5.05 ; action_money: 504 Почему, если money равен 5.05, то action_money равен 504, а не 505? Это как пример. На самом деле поведение какое-то хаотичное. Например, при том же money == 5.03 всё ок. Спасибо. Название: Re: QDoubleSpinBox, double, int Отправлено: m_ax от Июль 15, 2013, 11:59 Теневая экономика)
Название: Re: QDoubleSpinBox, double, int Отправлено: serg_hd от Июль 15, 2013, 12:02 Теневая экономика) Я давно понял, что при юзании денег лучше использовать int (то есть все деньги - только центы), проблем с этим совершенно никаких. Только при отображении под рукой иметь транслятор для деления на 100=).С даблами была полная жопа. Но тут мне надо чтобы юзер выбрал деньги с помощью QDoubleSpinBox'а, а в слоте такая вот хрень происходит. Название: Re: QDoubleSpinBox, double, int Отправлено: m_ax от Июль 15, 2013, 12:27 Возможно здесь qDebug округляет money при выводе..
Название: Re: QDoubleSpinBox, double, int Отправлено: m_ax от Июль 15, 2013, 12:46 Попробуйте, вместо qDebuga std::cerr:
Код
Для std::setprecision нужно будет <iomanip> подключить.. Название: Re: QDoubleSpinBox, double, int Отправлено: serg_hd от Июль 15, 2013, 13:11 Попробуйте, вместо qDebuga std::cerr: Код
Для std::setprecision нужно будет <iomanip> подключить.. Так тоже нет. Но получилось так: Код
По всей видимости, double в слоте не 5.01 (как пример), а 5.0099999999999 или типа того. Ну и std::cout выводит это дело по-своему. |