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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2010, 16:21   #1
cleversleazoid
Новичок
Джуниор
 
Регистрация: 28.12.2010
Сообщений: 1
По умолчанию числа с плавающей точкой

подскажите, пожалуйста, как получить дробную часть числа без погрешностей
например из 12.35 -> 0.35, а не 0.34999999
cleversleazoid вне форума Ответить с цитированием
Старый 29.12.2010, 06:37   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Никак. Числа с плавающей точкой (как, естественно, и другие) хранятся на компьютере в двоичной, а не десятичной форме, поэтому многие дробные числа в принципе не могут храниться во встроенных типах C/C++ с абсолютной точностью.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 29.12.2010, 07:52   #3
Donatello
Форумчанин
 
Аватар для Donatello
 
Регистрация: 22.12.2010
Сообщений: 109
По умолчанию

А если сделать хитрый цикл, который будет отсекать за круг одну цифру и прибавлять нужное число, так что бы как бы округлить число и так до сотых. Или что то подобное. Ведь округление именно так и происходит в принципе то Правда я пока что сам только учусь программировать, мб и незя так сделать или очень сложно и ненужно в общем то
Я бы изменил мир, но бог не дает исходников (c)

И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки.
Donatello вне форума Ответить с цитированием
Старый 29.12.2010, 15:15   #4
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

Первое что приходит в голову - результат округлять до нужного кол-ва разрядов (до 2х)
А второе что приходит несколько веселее - переводишь число с точкой в строку а из строки выделяешь часть после точки и преобразуешь в инт
UltimaBeaR вне форума Ответить с цитированием
Старый 29.12.2010, 15:23   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
результат округлять до нужного кол-ва разрядов
ИМХО 100%-го варианта нет... Все равно сопроц за точностью не будет гнаться, и может слажать в определенных условиях.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.12.2010, 00:43   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

можно поиздеваться и представить число в виде рациональной дроби со знаменателем равным степени 10
тогда можно будет получить точнее некуда)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сложить два числа с плавающей точкой forsy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 19 29.03.2010 02:15
помогите с плавающей точкой Egory4 Помощь студентам 5 01.11.2009 14:48
Преобразование числа с плавающей точкой в строку Sibedir Общие вопросы Delphi 14 09.03.2008 21:48
Числа с плавающей точкой Blondinka Общие вопросы Delphi 8 21.09.2007 11:32