2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Подскажите - вопрос по Делфи
Сообщение16.11.2013, 00:20 


26/10/13
42
Скажите пожалуйста, как можно реализовать стандартную функцию frac ( берем дробную часть от числа) своими руками в Делфи? Я думаю встроенная функция работает с представлением числа в компьютере, то есть напрямую отслеживаются биты, которые занятый мантисой. А как это сделать на более высоком уровне? И, соответственно, смежный вопрос - как проверить, является ли введенное А (типа extended) целым? Как вы поняли, без стандартной функции frac

 Профиль  
                  
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 06:58 
Аватара пользователя


31/10/08
1244
frac - делаешь через округление.
По поводу формата с extended вы ошибаетесь - он всегда не целый. Прочитайте про формат чисел с плавающей запятой.

 Профиль  
                  
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 12:37 
Аватара пользователя


24/05/13
49
Цитата:
как проверить, является ли введенное А (типа extended) целым?

Может быть проверять не число типа extended, а введенную строку, типа string.
Есть ли в ней символ DecimalSeparator (. или ,) , а если есть, то что после него кроме нулей.

 Профиль  
                  
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 15:06 


26/10/13
42
Pavia, вы меня совсем неправильно поняли на счет frac. Число типа extended всегда нецелое ДЛЯ КОМПЬЮТЕРА, я прекрасно знаю, как числа представляются в битах памяти. Я говорю о том, а вдруг число РЕАЛЬНО(для нас с вами) целое? То есть с нулевой мантисой. Lahme, а вот Вы поняли меня хорошо, но предложили слишком "читерское" решение задачи, оно тривиальное и не интересное. Я бы хотел узнать, можно ли как - то это реализовать узнавание целого, апеллируя только арифметикой.

 Профиль  
                  
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 15:42 
Заслуженный участник


07/07/09
5408
Можно вычитать по единичке и проверять полутся ли ноль._

 Профиль  
                  
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 16:29 
Заслуженный участник


09/09/10
3729
LexiBender в сообщении #789276 писал(а):
Я говорю о том, а вдруг число РЕАЛЬНО(для нас с вами) целое? То есть с нулевой мантисой.

Ну и проверьте, нулевая ли она — if Frac(x) = 0.0 then {...}.

 Профиль  
                  
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 17:05 
Аватара пользователя


31/10/08
1244
LexiBender
Ещё раз идите почитайте про числа. И задайте вопрос используя обще принятые термины. А то вас понять не возможно.
http://softelectro.ru/ieee754.html

LexiBender в сообщении #789276 писал(а):
Я бы хотел узнать, можно ли как - то это реализовать узнавание целого, апеллируя только арифметикой.

Нельзя. Информация при конвертировании теряется. Определить можно только по строке.

Xey
Xey в сообщении #789286 писал(а):
Можно вычитать по единичке и проверять полутся ли ноль._

Читаем про числа с плавающей точкой, а потом ищем ошибки в Вашем решении.

 Профиль  
                  
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 20:32 
Заслуженный участник


28/04/09
1933
Xey
Xey в сообщении #789286 писал(а):
Можно вычитать по единичке и проверять полутся ли ноль._
Попробуйте запустить вот такую программку:
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
program RealTrick;
const
        c = 20000000;
var
        v : Single;
        i : LongInt;
begin
        v := c;
        i := c;
        WriteLn('v':25, 'i':10);
        WriteLn('From':5, v:20, i:10);
        while (v > 0) and (i > 0) do
        begin
                v := v - 1;
                Dec(i);
        end;
        WriteLn('To':5, v:20, i:10);
end.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group