Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

Литература по C++: с какой книги лучше всего начинать? - C++
всем привет,две недели по вечерам изучаю C++ но даётся очень нелегко, проблема с литературой, начал с C++ для чайников пролистал...

Смысл const char* и о том, какой тип строк лучше использовать - C++
Я никак не могу понять смысла const char*. Это строка в стиле C, я знаю. Но чем эта запись отличается от char*? Или вообще, просто char?...

15
co6ak
Кошковед
409 / 502 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
11.12.2011, 22:35 #2
string
0
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 22:39  [ТС] #3
это есть число и с ним надо будит работать... Думаю стринг не очень подойдет или это пофиг?
0
prazuber
110 / 110 / 3
Регистрация: 29.04.2010
Сообщений: 240
11.12.2011, 22:40 #4
double. А есть еще варианты?
0
Байт
Диссидент
Эксперт C
16574 / 10844 / 1652
Регистрация: 24.12.2010
Сообщений: 20,975
11.12.2011, 22:49 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от nonamez123 Посмотреть сообщение
это есть число и с ним надо будит работать... Думаю стринг не очень подойдет или это пофиг?
Это все зависит от того, как с ним надо будит работать
Можно его нарисовать на бумажке и медитировать, глядучи. Можно с чем-то складывать, умножать, в степени возводить, синусы и косинусы дергать. Можно каждую циферку под микроскопом разглядывать и предположительно угадать дату конца света. А так - чего? Хорошее число, рациональное
4
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 22:52  [ТС] #6
зачотно))) Мне в принципе надо надо из 3 простых
Можно с чем-то складывать, умножать, в степени возводить, синусы и косинусы дергать.
а затем просто
Можно его нарисовать на бумажке и медитировать, глядучи.
0
Frizar
11 / 11 / 1
Регистрация: 24.04.2011
Сообщений: 116
11.12.2011, 23:03 #7
Цитата Сообщение от nonamez123 Посмотреть сообщение
Есть число 2455903.795232, какой для него лучше всего тип переменной использовать?
Думаю нужно использовать, как уже говорили тип double или long double. Я бы ещё преобразование по формату сделал, а то слишком длинный хвост да и само число.
0
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 23:08  [ТС] #8
Это так обозначаецо юлианский день. По этому надо именно такого формата.
1
Байт
Диссидент
Эксперт C
16574 / 10844 / 1652
Регистрация: 24.12.2010
Сообщений: 20,975
12.12.2011, 01:25 #9
Цитата Сообщение от nonamez123 Посмотреть сообщение
Это так обозначаецо юлианский день. По этому надо именно такого формата.
Блин! А до меня то не дошло! Это ровно 08.12.2011 07:05:08. Обидно даже.Уж казалось бы мне юлианские дни надо с пол-взгляда распознавать!
Что могу сказать. Делаю серьезную астрологическую программу. Юзаю юлианский день как double, за много лет проблем не было. Ну, там иногда секундочки лишние выскакивают. Но это поправимо.
0
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;
}
0
Байт
Диссидент
Эксперт C
16574 / 10844 / 1652
Регистрация: 24.12.2010
Сообщений: 20,975
12.12.2011, 01:37 #11
Хотя есть и другие подходы. Так, в ефемеридах DE 406 юлиань представляется как 2 double, один - целая часть, второй - то что от целой части остается. Но выяснилось, что все это от лукавого, обычный double вполне держит точность.
0
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 01:40  [ТС] #12
так а по поводу моего кода на прошлой странице? И это, как ты перегнал так бысро обратно ? Есть готовые решения или хотя бы формулы?
0
Байт
Диссидент
Эксперт C
16574 / 10844 / 1652
Регистрация: 24.12.2010
Сообщений: 20,975
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
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. Далее нашел калькулятор юлианского дня. Если вбить там день,месяц,год-то всё совпадает. Кому верить ?
1
Байт
Диссидент
Эксперт C
16574 / 10844 / 1652
Регистрация: 24.12.2010
Сообщений: 20,975
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
12.12.2011, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2011, 12:42
Привет! Вот еще темы с ответами:

Как осуществить ввод числа, не зная какой тип числа будет введён? - C++
И не объявляя вводимую переменную как double...

Какой учебник лучше для изучения С++ - C++
Л. Джонс - С++ за 21 день Р.Лафоре 4е издание - Объектно-ориентированное программирование в С++ Ю.А.Щупак, Т.А.Павловская - C/C++...

Какой компилятор лучше выбрать для проганья на C++? - C++
Добрый день господа,очень хочу попросить совета профессионалов. Учусь программированию на С++,С,но столкнулся с дилеммой,что выбрать к...

Какой тип использовать для создания рекрсивного массива - C++
Здравствуйте. Не в первый раз встречаюсь с различными задачами в которых очень удобно было бы использовать универсальный тип...


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

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

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