как вывести число пять раз

// выставляем точку отчёта
float a_t_pitch = _direction;        // точка отрисовки

a_t_pitch = a_t_pitch - 80.0;        // отклад 80 градусов
if(a_t_pitch < 0)
    a_t_pitch = a_t_pitch + 360.0;

qDebug() << a_t_pitch;

 float a = 0;
 for(;a<=160.0;a= a+0.1)
 {
     if (a_t_pitch >= 360.0){
         a_t_pitch = a_t_pitch - 360.0;  }
     if (a_t_pitch <= -0.1)
         a_t_pitch = a_t_pitch + 360.0;

     if(((int)a_t_pitch % (int)30.0) == 0)
     {
          qDebug() << "позиция " << a_t_pitch;
     }
     a_t_pitch= a_t_pitch +0.1;
 }

а вот что он мне выводит :

280 
позиция  300.001
позиция  300.101
позиция  300.201
позиция  300.301
позиция  300.401
позиция  300.501
позиция  300.601
позиция  300.701
позиция  300.801
позиция  300.901
позиция  330.003
позиция  330.103
позиция  330.203
позиция  330.303
позиция  330.403
позиция  330.503
позиция  330.603
позиция  330.703
позиция  330.803
позиция  330.903
позиция  0.00488281
позиция  0.104883
позиция  0.204883
позиция  0.304883
позиция  0.404883
позиция  0.504883
позиция  0.604883
позиция  0.704883
позиция  0.804883
позиция  0.904883
позиция  30.005
позиция  30.105
позиция  30.205
позиция  30.305
позиция  30.405
позиция  30.505
позиция  30.605
позиция  30.705
позиция  30.805
позиция  30.905
позиция  60.0045
позиция  60.1045
позиция  60.2045
позиция  60.3045
позиция  60.4045
позиция  60.5045
позиция  60.6045
позиция  60.7045
позиция  60.8045
позиция  60.9045

как иправить эту логику(желательно эту строчку if(((int)a_t_pitch % (int)30.0) == 0)) , чтоб он не воспринимал значения типа 0.00488281

по сути надо чтоб вывел , пять раз

позиция  300
позиция  330
позиция  0
позиция  30
позиция  60

Ответы (1 шт):

Автор решения: timob256

в общем воспользовался ответом @wololo

    bool t_slovo = false;
    float a = 0;
    for(;a<=160.1;a=a+0.1)
    {
        if (a_t_pitch >= 360.0){
            a_t_pitch = a_t_pitch - 360.0;  }
        if (a_t_pitch <= -0.1)
            a_t_pitch = a_t_pitch + 360.0;


        if(fabs(fmod(a_t_pitch, 30.0f)) < 0.1f / 10 )
            //        if(((int)a_t_pitch % (int)30.0) == 0)
        {
            t_slovo = true;

            if(a_t_pitch == float(360.0))
            {_text = QString::number(0, 10);}
            else
            {_text = QString::number((int)a_t_pitch, 10);}

            //            _myTexpr.shirina_stroki = string_size.horizontalAdvance(ctroka);   // узнаём ширину строки
            qDebug() << "a_t_pitch :" << a_t_pitch;
            // шрифт и обводы
            if(_drawOutline)
            {
                p->setBrush(QBrush(Qt::NoBrush));
                p->setPen(QPen(_colorOutline, 2*_thicknessOutline + _thickness));
                p->drawLine(QPointF(-r+(part_r*a), 0), QPointF(-r+(part_r*a), -r*0.200));
            }
            // рисуем большую линию
            p->setBrush(Qt::NoBrush);
            p->setPen(QPen(_colorItem, _thickness, Qt::SolidLine));
            p->drawLine(QPointF(-r+(part_r*a), 0), QPointF(-r+(part_r*a), -r*0.200));

            // рисуем надпись
            //            _label->setPosition(0.9, -r+(1*a) );
            _size_text = string_size.horizontalAdvance(_text);   // узнаём ширину строки


            if(_drawOutline)
            {
                p->setBrush(QBrush(Qt::NoBrush));
//                p->setPen(QPen(_colorOutline, 2*_thicknessOutline));// ????? ВОПРОС УЗНАТЬ !!!
                p->setPen(QPen(_colorOutline, r/3.0));
                p->drawText(QPointF((-r+(part_r*a))-(_size_text/2), -r*0.300), _text);
            }
            p->setBrush(Qt::NoBrush);
            p->setPen(QPen(_colorItem, _thickness, Qt::SolidLine));
//            p->drawText(QPointF((-r+(part_r*a))-(_size_text/2), -r*0.300), _text);

        }
        if( (fabs(fmod(a_t_pitch, 10.0f)) < 0.1f/10) && t_slovo == false)
            //        if(((int)a_t_pitch % (int)10.0) == 0 && t_slovo == false)
        {
            if(_drawOutline)
            {
                p->setBrush(QBrush(Qt::NoBrush));
                p->setPen(QPen(_colorOutline, 2*_thicknessOutline + _thickness));
                p->drawLine(QPointF(-r+(part_r*a), 0), QPointF(-r+(part_r*a), -r*0.150));
            }
            // рисуем малую  линию
            p->setBrush(Qt::NoBrush);
            p->setPen(QPen(_colorItem, _thickness, Qt::SolidLine));
            p->drawLine(QPointF(-r+(part_r*a), 0), QPointF(-r+(part_r*a), -r*0.150));
        }
        t_slovo = false;
        a_t_pitch= a_t_pitch +0.1;
    }

вот вотрой вариант через инт

 int a = 0; bool t_slovo = false;
    for(;a<2001;a++)
    {
        //          qDebug() << "a_t_pitch++: " << a_t_pitch;

        if (a_t_pitch >= 3600){
            a_t_pitch = a_t_pitch - 3600;  }
        if (a_t_pitch <= -1)
            a_t_pitch = a_t_pitch + 3600;

        if((a_t_pitch % 300) == 0)
        {
            t_slovo = true;
            if(a_t_pitch == float(3600))
                ctroka = QString::number(0, 10);
            else
                ctroka = QString::number(a_t_pitch/10, 10);

//            qDebug() << "a_t_pitch++: " << a_t_pitch;

            _myTexpr.shirina_stroki = string_size.horizontalAdvance(ctroka);   // узнаём ширину строки

             // рисуем большую линию
            painter.drawLine(QPointF(0+(x_t*a),_myTexpr.m_t_razm[3]*0.4),
                    QPointF(0+(x_t*a),  _myTexpr.m_t_razm[3]));

            painter.drawText(0+(x_t*a)-(_myTexpr.shirina_stroki/2), _myTexpr.m_t_razm[3]*0.3, ctroka); // рисуем надпись
        }
        if((a_t_pitch % 100) == 0 && t_slovo == false)
        {
            /**
                  расписываю отрисовку по иксу :
                  (_myTexpr.m_t_razm[1]*0.03) - отступ уже внутри самого компаса что можно было "втянуть" текст компаса
                  _myTexpr.m_t_razm[0] - отступ по иксу от границ
                  x_t*a - (x_t = ширина всего компаса/180.0;)* на позицию прохода а= до 201
            **/

            // рисуем малую линию
            painter.drawLine(QPointF(0+(x_t*a),_myTexpr.m_t_razm[3]*0.6),
                    QPointF(0+(x_t*a),  _myTexpr.m_t_razm[3]));

            //             painter.drawLine(QPointF((_myTexpr.m_t_razm[1]+(x_t*a)), _myTexpr.razm_lin_m+_myTexpr.m_t_razm[3]),
            //                     QPointF(_myTexpr.m_t_razm[1]+(x_t*a), _myTexpr.razm_lin_b+_myTexpr.m_t_razm[3])); //     _myTexpr.m_t_razm[3]         _myTexpr.razm_text+_myTexpr.m_t_razm[3]
        }
        //        qDebug() << "a_t_pitch-for: " << a_t_pitch;
        t_slovo = false;
        a_t_pitch++;
    }
→ Ссылка