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

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

Восстановить пароль Регистрация
 
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 22:35     Какой тип лучше всего подойдет для числа? #1
Есть число 2455903.795232, какой для него лучше всего тип переменной использовать?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
11.12.2011, 22:35     Какой тип лучше всего подойдет для числа? #2
string
nonamez123
 Аватар для nonamez123
184 / 180 / 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. А есть еще варианты?
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
11.12.2011, 22:49     Какой тип лучше всего подойдет для числа? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от nonamez123 Посмотреть сообщение
это есть число и с ним надо будит работать... Думаю стринг не очень подойдет или это пофиг?
Это все зависит от того, как с ним надо будит работать
Можно его нарисовать на бумажке и медитировать, глядучи. Можно с чем-то складывать, умножать, в степени возводить, синусы и косинусы дергать. Можно каждую циферку под микроскопом разглядывать и предположительно угадать дату конца света. А так - чего? Хорошее число, рациональное
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 22:52  [ТС]     Какой тип лучше всего подойдет для числа? #6
зачотно))) Мне в принципе надо надо из 3 простых
Можно с чем-то складывать, умножать, в степени возводить, синусы и косинусы дергать.
а затем просто
Можно его нарисовать на бумажке и медитировать, глядучи.
Frizar
10 / 10 / 1
Регистрация: 24.04.2011
Сообщений: 111
11.12.2011, 23:03     Какой тип лучше всего подойдет для числа? #7
Цитата Сообщение от nonamez123 Посмотреть сообщение
Есть число 2455903.795232, какой для него лучше всего тип переменной использовать?
Думаю нужно использовать, как уже говорили тип double или long double. Я бы ещё преобразование по формату сделал, а то слишком длинный хвост да и само число.
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 23:08  [ТС]     Какой тип лучше всего подойдет для числа? #8
Это так обозначаецо юлианский день. По этому надо именно такого формата.
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
12.12.2011, 01:25     Какой тип лучше всего подойдет для числа? #9
Цитата Сообщение от nonamez123 Посмотреть сообщение
Это так обозначаецо юлианский день. По этому надо именно такого формата.
Блин! А до меня то не дошло! Это ровно 08.12.2011 07:05:08. Обидно даже.Уж казалось бы мне юлианские дни надо с пол-взгляда распознавать!
Что могу сказать. Делаю серьезную астрологическую программу. Юзаю юлианский день как double, за много лет проблем не было. Ну, там иногда секундочки лишние выскакивают. Но это поправимо.
nonamez123
 Аватар для nonamez123
184 / 180 / 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;
}
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
12.12.2011, 01:37     Какой тип лучше всего подойдет для числа? #11
Хотя есть и другие подходы. Так, в ефемеридах DE 406 юлиань представляется как 2 double, один - целая часть, второй - то что от целой части остается. Но выяснилось, что все это от лукавого, обычный double вполне держит точность.
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 01:40  [ТС]     Какой тип лучше всего подойдет для числа? #12
так а по поводу моего кода на прошлой странице? И это, как ты перегнал так бысро обратно ? Есть готовые решения или хотя бы формулы?
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
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
184 / 180 / 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. Далее нашел калькулятор юлианского дня. Если вбить там день,месяц,год-то всё совпадает. Кому верить ?
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
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++ Какой тип использовать для создания рекрсивного массива

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

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

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