Форум: "Прочее";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];
ВнизВсегда ли функции FloatToStr и StrToFloat делают однозначный Найти похожие ветки
← →
Вещь (2008-02-15 05:19) [0]перевод туда и обратно?
Имеется в виду превращение 1 в 0.99999999 и т. п.
Может такое быть? И если да, то как избежать?
← →
Anatoly Podgoretsky © (2008-02-15 07:47) [1]> Вещь (15.02.2008 05:19:00) [0]
Целые всегда точные, но лучше в этом случае применять Int функции
← →
Вещь (2008-02-15 08:00) [2]С целыми всё понятно. Интересуют именно вещественные и не круглые.
← →
Рамиль © (2008-02-15 09:02) [3]
> Всегда ли функции FloatToStr и StrToFloat делают однозначный
нет.
> И если да, то как избежать?
зачем?
← →
Ins © (2008-02-15 10:39) [4]
> Целые всегда точные
Не всегда.
← →
Правильный_Вася (2008-02-15 11:11) [5]
> > Целые всегда точные
> Не всегда.
т.е. целая Int(1) <> целой Int(1) ???
← →
Marser © (2008-02-15 11:18) [6]Дробная часть числа в двоичной форме хранится в виде суммы степеней двойки, также как и целая, только эти степени отрицательные, соответственно - 0.5, 0.25, 0.125, 0.0625 и т.д., соответственно если твоя дробь в некотором приближении не раскладывается точно как сумма этих степеней, то точного результата не будет.
← →
Anatoly Podgoretsky © (2008-02-15 11:32) [7]
> С целыми всё понятно. Интересуют именно вещественные и не
> круглые.
1 в твоем примере, это целое, а е дробное.
← →
Mystic © (2008-02-15 11:43) [8]Преобразования неоднозначно хотя бы из-за NAN.
Избежать просто: сохранять как последовательность байт.
← →
Ins © (2008-02-15 11:46) [9]
> т.е. целая Int(1) <> целой Int(1) ???
Речь не об этом. А о том, что целые числа не всегда точно представляются в вещественном формате.
> Дробная часть числа в двоичной форме хранится в виде суммы
> степеней двойки, также как и целая
Это в случае фиксированной точки так. А в случае плавающей - целая часть отдельно не хранится. Хранится мантисса (число от 1 до 2) и экспонента - степень двойки, на которую умножается мантисса. И далеко не все целые числа можно точно в таком формате представить.
← →
Anatoly Podgoretsky © (2008-02-15 11:52) [10]> Ins (15.02.2008 11:46:09) [9]
В пределах разрядной сетки всегда точно, там же для нормализации делается деление по модулю 2
← →
AndreyV © (2008-02-15 13:15) [11]> [0] Вещь (15.02.08 05:19)
А откуда возник вопрос? Всмысле, может не имеет существенного значения?
← →
Marser © (2008-02-15 13:53) [12]
>
> Это в случае фиксированной точки так. А в случае плавающей
> - целая часть отдельно не хранится. Хранится мантиса (число
> от 1 до 2) и экспонента - степень двойки, на которую умножается
> мантисса. И далеко не все целые числа можно точно в таком
> формате представить.
Я упрощенно писал о том, как хранится дробь, в частности, мантиса. Формат записи с плавающей запятой сути не меняет - редкое дробное число можно представить совершенно точно.
← →
Amoeba © (2008-02-15 13:57) [13]
> Вещь (15.02.08 05:19)
Читаем это до полного просветления:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
← →
Вещь (2008-02-16 03:30) [14]
> Mystic © (15.02.08 11:43) [8]
>
> Преобразования неоднозначно хотя бы из-за NAN.
> Избежать просто: сохранять как последовательность байт.
А надо в виде вещественных.
> AndreyV © (15.02.08 13:15) [11]
>
> > [0] Вещь (15.02.08 05:19)
>
> А откуда возник вопрос? Всмысле, может не имеет существенного
> значения?
Надо чтоб сохранялись в виде текста, и можно было отредактировать в ручную, в случае же, если редактирования небыло, то цифры должны преобразоваться обратно безо всяких искажений.
← →
korneley © (2008-02-16 09:03) [15]
> Надо чтоб сохранялись в виде текста
А зачем тогда вообще вещественные типы? Строка, только цифры, в первом символе возможен +/-, один раз допускаем "DecimalSeparator".
← →
AndreyV © (2008-02-16 18:45) [16]> [14] Вещь (16.02.08 03:30)
> Надо чтоб сохранялись в виде текста, и можно было отредактировать
> в ручную, в случае же, если редактирования небыло, то цифры
> должны преобразоваться обратно безо всяких искажений.
Наверно, не "сохранялись в виде текста", а число преобразовывалось в текст.
Тогда проверяий были ли изменнения в тексте, и, если были, преобразовывай
назад и сохраняй.
Или посмотри другие функции преобразования в текст без округления.
← →
DiamondShark © (2008-02-16 23:26) [17]
> Надо чтоб сохранялись в виде текста, и можно было отредактировать
> в ручную, в случае же, если редактирования небыло, то цифры
> должны преобразоваться обратно безо всяких искажений.
Понятно. Значит, проблемы, всё-таки, нет.
← →
korneley © (2008-02-17 07:09) [18]
> DiamondShark © (16.02.08 23:26) [17
Есть. И не в клозетах %) Если использовать перевод строки в double с целью проверки "правильности" ея написания... А затем назад в строку, и сохранить. Жесть!
← →
Вещь (2008-02-18 06:49) [19]
> AndreyV © (16.02.08 18:45) [16]
>
> > [14] Вещь (16.02.08 03:30)
> > Надо чтоб сохранялись в виде текста, и можно было отредактировать
> > в ручную, в случае же, если редактирования небыло, то
> цифры
> > должны преобразоваться обратно безо всяких искажений.
>
> Наверно, не "сохранялись в виде текста", а число преобразовывалось
> в текст.
Нет, надо чтоб сохранялось в виде текста, а потом грузилось.
← →
AndreyV © (2008-02-18 08:08) [20]> [19] Вещь (18.02.08 06:49)
> Нет, надо чтоб сохранялось в виде текста, а потом грузилось.
Ну и не забивай голову тогда. Точность ведь не изменится.
← →
Вещь (2008-02-19 06:33) [21]
> AndreyV © (18.02.08 08:08) [20]
>
> > [19] Вещь (18.02.08 06:49)
> > Нет, надо чтоб сохранялось в виде текста, а потом грузилось.
>
> Ну и не забивай голову тогда. Точность ведь не изменится.
>
А биты числа?
← →
korneley © (2008-02-19 08:15) [22]
> Вещь (19.02.08 06:33) [21]
> А биты числа?
??? Какие биты? (какие ноги? (с) Задние или передние? Ещё раз: если вам "Надо чтоб сохранялись в виде текста, и можно было отредактировать в ручную", то вещественные типы не нужны. Вместе с их битами, мантиссами и пр. Обычная строка, которая замечательно редактируется в TEdit - е. При желании - навесить обработчик OnKeyPress дабы лишнего в едит не навводили. Все. Сохраняйте свою строку. "В виде текста" :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.069 c