Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
1

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

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


Есть число 2455903.795232, какой для него лучше всего тип переменной использовать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2011, 22:35
Ответы с готовыми решениями:

Какой тип данных лучше подойдет для приложения, которое делит числа int или float?
Ответ написал int Хотя нутром чую, что float

Какой язык программирования лучше всего подойдет начинающему для взаимодействия с веб-сайтами?
Приветствую, форумчане! Какой язык программирования лучше всего подойдет начинающему для...

Какой тип матрицы лучше всего подойдёт для Игр?
TFT A-MVA TFT AH-IPS TFT E-IPS TFT e-PLS TFT H-IPS TFT IPS TFT MVA TFT P-IPS TFT PVA TFT...

Какой компонент лучше всего подойдет для отображения табличных данных
Здравствуйте !!! Делаю небольшую программку, используя Windows Forms. Нашёл там стандартные...

15
Кошковед
518 / 506 / 63
Регистрация: 12.04.2010
Сообщений: 1,391
11.12.2011, 22:35 2
string
0
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
11.12.2011, 22:39  [ТС] 3
это есть число и с ним надо будит работать... Думаю стринг не очень подойдет или это пофиг?
0
113 / 113 / 13
Регистрация: 29.04.2010
Сообщений: 240
11.12.2011, 22:40 4
double. А есть еще варианты?
0
Эксперт C
25439 / 15832 / 3386
Регистрация: 24.12.2010
Сообщений: 34,633
11.12.2011, 22:49 5
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от nonamez123 Посмотреть сообщение
это есть число и с ним надо будит работать... Думаю стринг не очень подойдет или это пофиг?
Это все зависит от того, как с ним надо будит работать
Можно его нарисовать на бумажке и медитировать, глядучи. Можно с чем-то складывать, умножать, в степени возводить, синусы и косинусы дергать. Можно каждую циферку под микроскопом разглядывать и предположительно угадать дату конца света. А так - чего? Хорошее число, рациональное
4
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
11.12.2011, 22:52  [ТС] 6
зачотно))) Мне в принципе надо надо из 3 простых
Можно с чем-то складывать, умножать, в степени возводить, синусы и косинусы дергать.
а затем просто
Можно его нарисовать на бумажке и медитировать, глядучи.
0
11 / 11 / 3
Регистрация: 24.04.2011
Сообщений: 117
11.12.2011, 23:03 7
Цитата Сообщение от nonamez123 Посмотреть сообщение
Есть число 2455903.795232, какой для него лучше всего тип переменной использовать?
Думаю нужно использовать, как уже говорили тип double или long double. Я бы ещё преобразование по формату сделал, а то слишком длинный хвост да и само число.
0
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
11.12.2011, 23:08  [ТС] 8
Это так обозначаецо юлианский день. По этому надо именно такого формата.
1
Эксперт C
25439 / 15832 / 3386
Регистрация: 24.12.2010
Сообщений: 34,633
12.12.2011, 01:25 9
Цитата Сообщение от nonamez123 Посмотреть сообщение
Это так обозначаецо юлианский день. По этому надо именно такого формата.
Блин! А до меня то не дошло! Это ровно 08.12.2011 07:05:08. Обидно даже.Уж казалось бы мне юлианские дни надо с пол-взгляда распознавать!
Что могу сказать. Делаю серьезную астрологическую программу. Юзаю юлианский день как double, за много лет проблем не было. Ну, там иногда секундочки лишние выскакивают. Но это поправимо.
0
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
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;
}
0
Эксперт C
25439 / 15832 / 3386
Регистрация: 24.12.2010
Сообщений: 34,633
12.12.2011, 01:37 11
Хотя есть и другие подходы. Так, в ефемеридах DE 406 юлиань представляется как 2 double, один - целая часть, второй - то что от целой части остается. Но выяснилось, что все это от лукавого, обычный double вполне держит точность.
0
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
12.12.2011, 01:40  [ТС] 12
так а по поводу моего кода на прошлой странице? И это, как ты перегнал так бысро обратно ? Есть готовые решения или хотя бы формулы?
0
Эксперт C
25439 / 15832 / 3386
Регистрация: 24.12.2010
Сообщений: 34,633
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/
0
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
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. Далее нашел калькулятор юлианского дня. Если вбить там день,месяц,год-то всё совпадает. Кому верить ?
1
Эксперт C
25439 / 15832 / 3386
Регистрация: 24.12.2010
Сообщений: 34,633
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 Посмотреть сообщение
Далее нашел калькулятор юлианского дня. Если вбить там день,месяц,год-то всё совпадает. Кому верить ?
Калькулятор симпатичный. Но считает только дни. С моими расчетами совпадает
0
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
12.12.2011, 13:40  [ТС] 16
ну и с моими как бы тоже-википедия врет выходит?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2011, 13:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Какой из антивирусов лучше всего подойдет для ПК, в котором памяти 1ГБ?
Поставила себе Касперский 2012. Он очень хорошо все находит,но он громоздкий слишком! все из-за...

Что лучше выбрать ? Какая cms больше всего подойдет для игрового портала ?
Добрый день, коллеги ! Делаю игровой портал, но не могу решить какую всё таки cms выбрать для...

Какой Linux лучше подойдет для школы.
Прошу подскажите, какой дистрибутив лучше подойдет для школы. Как наверно, все уже знают, что школы...

Какой тип переменной подойдет для денег?
Какой тип переменной подойдет для денег?

Какой linux лучше подойдет для моего ноута
Доброго времени суток! Вопрос в том, какой из дистрибутивов будет оптимален на моем ноуте: ...

Какой процессор лучше подойдет для RTX 2070?
I79700K или I78700k?


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.