Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки
Скажите пожалуйста, как можно реализовать стандартную функцию frac ( берем дробную часть от числа) своими руками в Делфи? Я думаю встроенная функция работает с представлением числа в компьютере, то есть напрямую отслеживаются биты, которые занятый мантисой. А как это сделать на более высоком уровне? И, соответственно, смежный вопрос - как проверить, является ли введенное А (типа extended) целым? Как вы поняли, без стандартной функции frac
Pavia
Re: Подскажите - вопрос по Делфи
16.11.2013, 06:58
frac - делаешь через округление. По поводу формата с extended вы ошибаетесь - он всегда не целый. Прочитайте про формат чисел с плавающей запятой.
Lahme
Re: Подскажите - вопрос по Делфи
16.11.2013, 12:37
Цитата:
как проверить, является ли введенное А (типа extended) целым?
Может быть проверять не число типа extended, а введенную строку, типа string. Есть ли в ней символ DecimalSeparator (. или ,) , а если есть, то что после него кроме нулей.
LexiBender
Re: Подскажите - вопрос по Делфи
16.11.2013, 15:06
Pavia, вы меня совсем неправильно поняли на счет frac. Число типа extended всегда нецелое ДЛЯ КОМПЬЮТЕРА, я прекрасно знаю, как числа представляются в битах памяти. Я говорю о том, а вдруг число РЕАЛЬНО(для нас с вами) целое? То есть с нулевой мантисой. Lahme, а вот Вы поняли меня хорошо, но предложили слишком "читерское" решение задачи, оно тривиальное и не интересное. Я бы хотел узнать, можно ли как - то это реализовать узнавание целого, апеллируя только арифметикой.
Xey
Re: Подскажите - вопрос по Делфи
16.11.2013, 15:42
Можно вычитать по единичке и проверять полутся ли ноль._
Я говорю о том, а вдруг число РЕАЛЬНО(для нас с вами) целое? То есть с нулевой мантисой.
Ну и проверьте, нулевая ли она — if Frac(x) = 0.0 then {...}.
Pavia
Re: Подскажите - вопрос по Делфи
16.11.2013, 17:05
LexiBender Ещё раз идите почитайте про числа. И задайте вопрос используя обще принятые термины. А то вас понять не возможно. http://softelectro.ru/ieee754.html
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.