Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2010, 19:04   #1
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию Увеличение разрядности чисел с плавающей запятой

Насколько мне известно, формат double использует 64 бита для представления чисел с плавающей запятой. Возможно ли увеличить точность представления чисел, если да - то насколько и как?
Dmitry_B вне форума Ответить с цитированием
Старый 01.08.2010, 21:57   #2
FelixXXI
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 48
По умолчанию

Насколько мне известно, диапазон значений типа данных double 1.7e-308...1.7e308. Что Вы вычисляете, Dmitry_B, если Вам 308 знаков после запятой не хватает?
Впрочем есть ещё и long double...
FelixXXI вне форума Ответить с цитированием
Старый 01.08.2010, 22:34   #3
arcer
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Dmitry_B Посмотреть сообщение
Насколько мне известно, формат double использует 64 бита для представления чисел с плавающей запятой. Возможно ли увеличить точность представления чисел, если да - то насколько и как?
Эт, конечно, смотря для каких целей. Есть конечно long double - 16 байт, но использование сего влечет трудности с выводом и вводом значений. Если у Вас какая-то действительно серьезная работа, то лучше напишите длинную арифметику, заодно и сами будете выделять себе количество байтов на мантису и экспоненту, а не щемиться в указаные стандартом пределы.
arcer вне форума Ответить с цитированием
Старый 01.08.2010, 22:36   #4
arcer
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от FelixXXI Посмотреть сообщение
Насколько мне известно, диапазон значений типа данных double 1.7e-308...1.7e308. Что Вы вычисляете, Dmitry_B, если Вам 308 знаков после запятой не хватает?
Впрочем есть ещё и long double...
Ну не только же в диапазоне дело. Точность тоже немаловажна, если не важней.
arcer вне форума Ответить с цитированием
Старый 02.08.2010, 22:23   #5
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию

Цитата:
Сообщение от FelixXXI Посмотреть сообщение
Насколько мне известно, диапазон значений типа данных double 1.7e-308...1.7e308. Что Вы вычисляете, Dmitry_B, если Вам 308 знаков после запятой не хватает?
Впрочем есть ещё и long double...
Не хватает. Иначе бы не спрашивал. Мало количество разрядов представления мантиссы - 52 бита. MSDN мне пишет, что длина long double = длине double = 64. Раньше было 80. Вычисляю полиномы степеней выше 50.
Dmitry_B вне форума Ответить с цитированием
Старый 02.08.2010, 22:28   #6
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию

Цитата:
Сообщение от arcer Посмотреть сообщение
Эт, конечно, смотря для каких целей. Есть конечно long double - 16 байт, но использование сего влечет трудности с выводом и вводом значений. Если у Вас какая-то действительно серьезная работа, то лучше напишите длинную арифметику, заодно и сами будете выделять себе количество байтов на мантису и экспоненту, а не щемиться в указаные стандартом пределы.
Спасибо, я уже начал создавать арифметику с повышенной точностью. Дело это очень хлопотное, вот и хотел посоветоваться. Если верить MSDN, то long double и double - одно и то же.
Dmitry_B вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа перевода чисел с плавающей запятой Veselyn Помощь студентам 4 03.01.2010 19:49
Преобразование чисел с плавающей точкой Ko3blpb Общие вопросы C/C++ 3 22.12.2009 21:19
Разделение чисел на до запятой и после запятой msser Microsoft Office Excel 8 23.10.2009 11:57
у меня ошибка с плавающей запятой... Bublik Помощь студентам 3 10.01.2009 23:20