Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.082 c
2-1204631275
zorik
2008-03-04 14:47
2008.03.30
Переход на Delphi 2007


2-1204572618
Resident
2008-03-03 22:30
2008.03.30
Abs


3-1194447563
Still Swamp
2007-11-07 17:59
2008.03.30
Вопрос по отправке сообщений SendMessage


2-1204372920
lana
2008-03-01 15:02
2008.03.30
Преобразование текста в таблицу.


15-1203259266
Alexd31
2008-02-17 17:41
2008.03.30
чем можно открыть DDF файл?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский