Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nonamez123
 Аватар для nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
#1

Какой тип лучше всего подойдет для числа? - C++

11.12.2011, 22:35. Просмотров 991. Ответов 15
Метки нет (Все метки)

Есть число 2455903.795232, какой для него лучше всего тип переменной использовать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 22:35     Какой тип лучше всего подойдет для числа?
Посмотрите здесь:

C++ Какой компилятор лучше выбрать для проганья на C++?
C++ нужен тип целого числа для числа 19!= 121 645 100 408 832 000
Литература по C++: с какой книги лучше всего начинать? C++
Как лучше всего хранить коэффициенты? C++
Какой учебник лучше для изучения С++ C++
C++ Какие методы есть в C++ для работы с файлами и в каких случаях какой лучше применять
Как лучше всего создать форму в С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
406 / 499 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
11.12.2011, 22:35     Какой тип лучше всего подойдет для числа? #2
string
nonamez123
 Аватар для nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 22:39  [ТС]     Какой тип лучше всего подойдет для числа? #3
это есть число и с ним надо будит работать... Думаю стринг не очень подойдет или это пофиг?
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
11.12.2011, 22:40     Какой тип лучше всего подойдет для числа? #4
double. А есть еще варианты?
Байт
Эксперт C
 Аватар для Байт
15042 / 9444 / 1383
Регистрация: 24.12.2010
Сообщений: 17,471
11.12.2011, 22:49     Какой тип лучше всего подойдет для числа? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от nonamez123 Посмотреть сообщение
это есть число и с ним надо будит работать... Думаю стринг не очень подойдет или это пофиг?
Это все зависит от того, как с ним надо будит работать
Можно его нарисовать на бумажке и медитировать, глядучи. Можно с чем-то складывать, умножать, в степени возводить, синусы и косинусы дергать. Можно каждую циферку под микроскопом разглядывать и предположительно угадать дату конца света. А так - чего? Хорошее число, рациональное
nonamez123
 Аватар для nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 22:52  [ТС]     Какой тип лучше всего подойдет для числа? #6
зачотно))) Мне в принципе надо надо из 3 простых
Можно с чем-то складывать, умножать, в степени возводить, синусы и косинусы дергать.
а затем просто
Можно его нарисовать на бумажке и медитировать, глядучи.
Frizar
11 / 11 / 1
Регистрация: 24.04.2011
Сообщений: 113
11.12.2011, 23:03     Какой тип лучше всего подойдет для числа? #7
Цитата Сообщение от nonamez123 Посмотреть сообщение
Есть число 2455903.795232, какой для него лучше всего тип переменной использовать?
Думаю нужно использовать, как уже говорили тип double или long double. Я бы ещё преобразование по формату сделал, а то слишком длинный хвост да и само число.
nonamez123
 Аватар для nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 23:08  [ТС]     Какой тип лучше всего подойдет для числа? #8
Это так обозначаецо юлианский день. По этому надо именно такого формата.
Байт
Эксперт C
 Аватар для Байт
15042 / 9444 / 1383
Регистрация: 24.12.2010
Сообщений: 17,471
12.12.2011, 01:25     Какой тип лучше всего подойдет для числа? #9
Цитата Сообщение от nonamez123 Посмотреть сообщение
Это так обозначаецо юлианский день. По этому надо именно такого формата.
Блин! А до меня то не дошло! Это ровно 08.12.2011 07:05:08. Обидно даже.Уж казалось бы мне юлианские дни надо с пол-взгляда распознавать!
Что могу сказать. Делаю серьезную астрологическую программу. Юзаю юлианский день как double, за много лет проблем не было. Ну, там иногда секундочки лишние выскакивают. Но это поправимо.
nonamez123
 Аватар для nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 01:32  [ТС]     Какой тип лучше всего подойдет для числа? #10
Ну я уже как бэ решил, но у меня погрешность вылезает... А именно если верить вики, то сечас:
JD=2455903.795232
У меня же:
JD=2455908.793750

Может подскажешь, формулу брал с вики:
C++
1
2
3
4
double a = (14-laikas("%m"))/12.0;
    double y = laikas("%Y") + 4800.0 -a;
    double m = laikas("%m") + 12.0 * a - 3.0;
    double JDN = laikas("%d")+((153.0 * m+2.0)/5.0)+(365.0*y)+(y/4.0)-(y/100.0)+(y/400.0)-32045.0;
Дата
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int laikas(char *formatas ){
    
    time_t rawtime;
    struct tm * timeinfo;
    char buffer [80];
    
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
    
    strftime(buffer,80,formatas,timeinfo);
    
    int n=atoi(buffer);
    
    return n;
}
Байт
Эксперт C
 Аватар для Байт
15042 / 9444 / 1383
Регистрация: 24.12.2010
Сообщений: 17,471
12.12.2011, 01:37     Какой тип лучше всего подойдет для числа? #11
Хотя есть и другие подходы. Так, в ефемеридах DE 406 юлиань представляется как 2 double, один - целая часть, второй - то что от целой части остается. Но выяснилось, что все это от лукавого, обычный double вполне держит точность.
nonamez123
 Аватар для nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 01:40  [ТС]     Какой тип лучше всего подойдет для числа? #12
так а по поводу моего кода на прошлой странице? И это, как ты перегнал так бысро обратно ? Есть готовые решения или хотя бы формулы?
Байт
Эксперт C
 Аватар для Байт
15042 / 9444 / 1383
Регистрация: 24.12.2010
Сообщений: 17,471
12.12.2011, 01:49     Какой тип лучше всего подойдет для числа? #13
JD=2455908.793750 = 13.12.2011 07:03:00
JD=2455903.795232 = 08.12.2011 07:05:08
Может ты Юлия с Григорием путаешь ?
Программку пошлю. Но не сейчас. Спать охота.

Добавлено через 3 минуты
Цитата Сообщение от nonamez123 Посмотреть сообщение
так а по поводу моего кода на прошлой странице? И это, как ты перегнал так быстро обратно ? Есть готовые решения или хотя бы формулы?
Есть такая прожка - Uranus
http://www.ipasoft.ru/
nonamez123
 Аватар для nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 10:01  [ТС]     Какой тип лучше всего подойдет для числа? #14
Цитата Сообщение от Байт Посмотреть сообщение
JD=2455908.793750 = 13.12.2011 07:03:00
JD=2455903.795232 = 08.12.2011 07:05:08
Может ты Юлия с Григорием путаешь ?
Программку пошлю. Но не сейчас. Спать охота.

Добавлено через 3 минуты
Есть такая прожка - Uranus
http://www.ipasoft.ru/
я вот это юзал Вычисление номера юлианского дня (JDN) по дате григорианского календаря

Добавлено через 2 часа 8 минут
В общем подскажите где ошибка, пользуюсь этим Вычисление юлианской даты по дате календаря

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <time.h>
 
using namespace std;
 
int laikas(const char *formatas){
time_t rawtime;
    struct tm * timeinfo;
    char skaicius [80];
    
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
    
    strftime(skaicius,80,formatas,timeinfo);
    
    return atoi(skaicius);
}
 
int main(){
double a = (14-laikas("%m"))/12.0;
 
        ///int или double? 
    double y = laikas("%Y") + 4800.0 -a;
    double m = laikas("%m") + 12.0 * a - 3.0;
    double JDN = laikas("%d")+((153.0 * m+2.0)/5.0)+(365.0*y)+(y/4.0)-(y/100.0)+(y/400.0)-32045.0;//Григорианский календарь
    double jdn = laikas("%d")+((153.0 * m+2.0)/5.0)+(365.0*y)+(y/4.0) - 32083.0;//Юлианский календарь
    
    double JD = JDN + (laikas("%H")-12)/24 + laikas("%M")/1440 + laikas("%S")/86400;
        cout >> JD;
    }
Ошибочка где-то в подсчётах...

Добавлено через 8 минут
Да, почитал ещё вики, вычитал вот это
Все операции деления — целочисленные, то есть, остатки деления отбрасываются.
Это при нахождении JDN. Переправил всё на инт за исключением JD. Далее нашел калькулятор юлианского дня. Если вбить там день,месяц,год-то всё совпадает. Кому верить ?
Байт
Эксперт C
 Аватар для Байт
15042 / 9444 / 1383
Регистрация: 24.12.2010
Сообщений: 17,471
12.12.2011, 12:42     Какой тип лучше всего подойдет для числа? #15
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void JtoT(double jd, int *dt)   /* jul -> TIME */
{  double f, z, al, a, b, c, d, e, day_d, gmth, jd2; 
   double DvY = 365.25;      /* Дней в году (грубо) */
  
    jd2 = jd + 0.5;
    z = floor(jd2);
    f = jd2 - z;
    if (z<2299161) a = z;
    else   {
       al = floor((z-1867216.25)/36524.25);
       a = z + 1 + al - floor(al/4);
    }
    b = a + 1524;
    c = floor((b-122.1)/DvY);
    d = floor(DvY*c);
    e = floor((b-d)/30.6001);
    day_d = b - d - floor(30.6001*e) + f;
    dt[1] = e-((e<13.5)?1:13);
    dt[2] = c - ((dt[1] < 2.5) ? 4715:4716);
         if (dt[2]<=0) dt[2]--;
    dt[0] = day_d;
    gmth = (day_d - dt[0])*C24;
    dt[3] = (int)gmth;
    gmth = (gmth - dt[3])*60;
    dt[4] = gmth;
    dt[5] = (gmth - dt[4])*60;
}
int dt[6] - День, месяц, год (4 знака), час, мин, сек

Добавлено через 3 минуты
Цитата Сообщение от nonamez123 Посмотреть сообщение
Далее нашел калькулятор юлианского дня. Если вбить там день,месяц,год-то всё совпадает. Кому верить ?
Калькулятор симпатичный. Но считает только дни. С моими расчетами совпадает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2011, 13:40     Какой тип лучше всего подойдет для числа?
Еще ссылки по теме:

C++ Какой тип использовать для создания рекрсивного массива
C++ Как осуществить ввод числа, не зная какой тип числа будет введён?
C++ Какой тип данных нужен для возведения в степень
Какой язык программирования лучше всего подойдет начинающему для взаимодействия с веб-сайтами? C++
C++ Какой тип данных использовать для работы с большими числами?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nonamez123
 Аватар для nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 13:40  [ТС]     Какой тип лучше всего подойдет для числа? #16
ну и с моими как бы тоже-википедия врет выходит?
Yandex
Объявления
12.12.2011, 13:40     Какой тип лучше всего подойдет для числа?
Ответ Создать тему
Опции темы

Текущее время: 21:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru