2014 dxdy logo

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

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




 
 Подскажите - вопрос по Делфи
Сообщение16.11.2013, 00:20 
Скажите пожалуйста, как можно реализовать стандартную функцию frac ( берем дробную часть от числа) своими руками в Делфи? Я думаю встроенная функция работает с представлением числа в компьютере, то есть напрямую отслеживаются биты, которые занятый мантисой. А как это сделать на более высоком уровне? И, соответственно, смежный вопрос - как проверить, является ли введенное А (типа extended) целым? Как вы поняли, без стандартной функции frac

 
 
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 06:58 
Аватара пользователя
frac - делаешь через округление.
По поводу формата с extended вы ошибаетесь - он всегда не целый. Прочитайте про формат чисел с плавающей запятой.

 
 
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 12:37 
Аватара пользователя
Цитата:
как проверить, является ли введенное А (типа extended) целым?

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

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

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

 
 
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 16:29 
LexiBender в сообщении #789276 писал(а):
Я говорю о том, а вдруг число РЕАЛЬНО(для нас с вами) целое? То есть с нулевой мантисой.

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

 
 
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 17:05 
Аватара пользователя
LexiBender
Ещё раз идите почитайте про числа. И задайте вопрос используя обще принятые термины. А то вас понять не возможно.
http://softelectro.ru/ieee754.html

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

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

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

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

 
 
 
 Re: Подскажите - вопрос по Делфи
Сообщение16.11.2013, 20:32 
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 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group