На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> преобразовать double к int
    ExpandedWrap disabled
              double D;
              
              int month;
                  for (int i = 0; i < count_row; i++) {
                  D = Vx[i];
                  month = int(D);
       
                  cout << "month" << month << "\n";
              }


    на выводе получается month 2017. а мне нужно чтоб было 1. я чё-то не понимаю где я ошибаюсь. :-?

    прошу, наведите на путь истинный
      О входных данных нужно телепатически догадаться?
        Цитата Nelly0892 @
        я чё-то не понимаю где я ошибаюсь.

        в коде ошибаешься. надо правильно, а у тебя неправильно :whistle:
          Цитата Nelly0892 @
          прошу, наведите на путь истинный

          Ваш код абсолютно правильный. В контексте вопроса "преобразовать double к int" никаких проблем нет. Если вы получаете 2017I - значит это было число 2017D.

          Добавлено
          Если ваше 2017D число должно быть преобразовано в 1I, тогда встаёт вопрос что за система счисления у вас, и каким образом вы представляете эти числа...
          Сообщение отредактировано: VisualProg -
            вот из этого считываю 01.2017
              ну вот видишь, ты считываешь из 01.2017 и получается month 2017, а ты считывай из 2017.01 и получишь year 01 ;)
                так мне оба числа нужны

                Добавлено
                ну я нашла причину. оказывается сам вектор сохраняется не всё число

                Добавлено
                какой есть способ чтоб отделить от числа 01.2017 число 01 ?

                ато случай с приведением типа не сработал
                  Цитата Nelly0892 @
                  какой есть способ чтоб отделить от числа 01.2017 число 01

                  В соседней теме привел пример "отделения". Но хранить надо ДВА числа для одной даты. И не double (который тут не нужен), а хватит обычного int.
                  double - это НЕ два числа вместе. double - это ОДНО вещественное число (отличается от float увеличенной точностью представления). Два числа - это либо структура, либо, например, std::pair<int, int>.
                  Сообщение отредактировано: shm -
                    Цитата Nelly0892 @
                    так, master фломастер. не умничай! не понял задачу иди в баню

                    Я правильно вас понимаю, вы хотите хранить два числа в одном? Если это так, и вы действительно осознаёте что делаете - у меня для вас не очень хорошая информация (не хорошая она именно для такой реализации) - double, не смотря на всю точность не гарантирует что вещественная часть числа (ваш хвост .01) будет именно такой какой вы её видите и считываете. Вас тут буквально заставляют задуматься о том что вы делаете и дают реальные решения проблемы.

                    1. Используйте два целых числа.
                    2. Не лезьте в вещественные числа, если не осознаёте их подводные камни. В математике вещественных чисел в программировании есть куча невидимых механизмов, которые поддерживают математический аппарат. Если вы видите число 0.1 это не значит что это одна десятая, потому что вы не видите всего хвоста числа, за которым, к тому же, тащится ещё куча вещественного мусора.
                    3. Shm предложил самый удобный и понятный вам вариант через структуру. Не игнорируйте его, а попытайтесь разобраться.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0330 ]   [ 16 queries used ]   [ Generated: 29.03.24, 00:03 GMT ]