Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

frac в TP работает неправильно.   Найти похожие ветки 

 
Ttrunder   (2010-01-09 02:15) [0]

Что делать функция frac в Turbo Pascal прибавляет в конце мантиссы какие то цифры..
frac(1.2) = 0.2(0...0)1 А должно 0.2
Как можно это исправить??


 
Германн ©   (2010-01-09 02:31) [1]


> frac в TP работает неправильно.
>

Правильно она работает. И не только в ТР.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


> Как можно это исправить?

Прочитать статью, уяснить её содержимое и изменить алгоритм решения задачи.


 
KilkennyCat ©   (2010-01-09 02:31) [2]

Жаль, что "орешник" не работает.


 
palva ©   (2010-01-09 02:36) [3]

А почему должно? У вас же число в машине представлено с погрешностью, значит последние разряды отброшены. Когда целая часть исчезла, то впереди у числа место освободилось, число сдвинулось влево, а справа в мантиссе появились нули вместо правильных цифр. После перевода в 10 с/с это искажение проявилось в мусоре появившемся в конце записи числа.

Так что всё работает правильно и ничего исправлять не надо.


 
Ttrunder   (2010-01-09 02:44) [4]

Мне нужно написать прогу, которая выводит вторую цифру от конца в дробной части числа...
Я сделал так, как можно сделать иначе???
program Get2Digi;
var
r: real;
i: integer;
function Get2Digit(num: real): integer;
var
prev   : integer;
current: integer;
f      : real;
begin
 current := -1;
 prev    := -1;
 while frac(num) <> 0.0 do
  begin
   prev    := current;
   f       := frac(num);
   current := trunc(f*10);
   num     := f*10;
  end;
 Get2Digit := prev;
end;

begin
Writeln("Enter real number:");
Read(r);
i := Get2Digit(r);
Write(i);
Readln;
end.


 
Ttrunder   (2010-01-09 02:45) [5]

Из-за "неправильной" работы frac программа не работает...


 
Германн ©   (2010-01-09 02:55) [6]


> Ttrunder   (09.01.10 02:45) [5]
>
> Из-за "неправильной" работы frac программа не работает..
> .
>

Статью по ссылке прочитал? Понял?

Имхо. Либо не прочитал, либо не понял и не захотел понять.

Про задачу
> Мне нужно написать прогу, которая выводит вторую цифру от
> конца в дробной части числа...

я вообще молчу.


 
Ttrunder   (2010-01-09 03:08) [7]

Германн ©   (09.01.10 02:55) [6]
Это учебная программа по Pascal"ю - задание... Какие либо знания по сопроцессорам и погрешностям я извиняюсь в Pascal"e нет... Как ещё в Pascal"е в его каноническом виде можно добыть цифру из дробной части?


 
palva ©   (2010-01-09 03:20) [8]


> Как ещё в Pascal"е в его каноническом виде можно добыть
> цифру из дробной части?

Перевести в десятичный вид и из строки выбрать нужную цифру.
Или вам двоичная цифра нужна?


 
palva ©   (2010-01-09 03:24) [9]

Иногда это сделать просто невозможно. Например, если вы напишете a:=0.2, то вы не можете знать, какая цифра фактически стоит после точки в компьютерном представлении. Может быть, 2, а может быть 1.


 
Германн ©   (2010-01-09 03:30) [10]


> Ttrunder   (09.01.10 03:08) [7]
>
> Германн ©   (09.01.10 02:55) [6]
> Это учебная программа по Pascal"ю - задание... Какие либо
> знания по сопроцессорам и погрешностям я извиняюсь в Pascal"e
> нет...

Значит точно не прочитал.
Так какого ты хрена ничтоже сумняшеся пишешь:
while frac(num) <> 0.0?
Ты всё же прочитай статью.

Ну а по задаче, я опять молчу. :)


 
Германн ©   (2010-01-09 03:32) [11]


> palva ©   (09.01.10 03:20) [8]
>
>
> > Как ещё в Pascal"е в его каноническом виде можно добыть
> > цифру из дробной части?
>
> Перевести в десятичный вид и из строки выбрать нужную цифру.
>

Саша. Это не твоё время суток!
Оставь это мне.


 
korneley ©   (2010-01-09 04:00) [12]


> Как ещё в Pascal"е в его каноническом виде...

Это печально, но канонического Pascal не существует (как среды). Не стандартизирован. А если вторую цифру "откусить", то попробуй

 s := Format("%.2f", [StrToFloat(Edit1.Text)]);
 caption := copy(s, Length(s), 1);

 после сдачи книги-то почитай :)


 
korneley ©   (2010-01-09 04:10) [13]

Ёлы-палы!!! Тут же ТР, а не Delphi! Сходу и не припомню, был там Format(), или нет...


 
KilkennyCat ©   (2010-01-09 04:39) [14]

был


 
KilkennyCat ©   (2010-01-09 04:40) [15]

только, вроде бы, он не входит в программу образования


 
korneley ©   (2010-01-09 13:20) [16]


> KilkennyCat ©   (09.01.10 04:40) [15]
> только, вроде бы, он не входит в программу образования

:))) Какого такого образования? Тут же явно "Мы все учились понемногу, чему-нибудь и как-нибудь"... Во, чего нащёл
http://primat.at.ua/load/15-1-0-105
:)


 
Anatoly Podgoretsky ©   (2010-01-09 15:44) [17]

> Ttrunder  (09.01.2010 02:15:00)  [0]

То что ты просишь невозможно, невозможно представить такое число в формате с плавающей запятой, любой точности.


 
Anatoly Podgoretsky ©   (2010-01-09 15:45) [18]

> KilkennyCat  (09.01.2010 02:31:02)  [2]

Работает, только не ясно кто его обслуживает.


 
Anatoly Podgoretsky ©   (2010-01-09 15:48) [19]

> Ttrunder  (09.01.2010 02:44:04)  [4]

Fraq не нужен, превращай в строку и бери любую цифру.


 
Anatoly Podgoretsky ©   (2010-01-09 15:49) [20]

> Германн  (09.01.2010 02:55:06)  [6]

Чего ты не можешь понять, если задание бессмысленное, то это значит институт.


 
Anatoly Podgoretsky ©   (2010-01-09 15:50) [21]

> Ttrunder  (09.01.2010 03:08:07)  [7]

В каноническом сложно, придется писать довольно сложную для студента программу.


 
Anatoly Podgoretsky ©   (2010-01-09 15:52) [22]

> korneley  (09.01.2010 04:00:12)  [12]

Это не вторая от конца.


 
korneley ©   (2010-01-09 16:20) [23]


> Anatoly Podgoretsky ©   (09.01.10 15:52) [22]
> > korneley  (09.01.2010 04:00:12)  [12]Это не вторая от
> конца.

Зато вторая от разделителя ;)


 
Palladin ©   (2010-01-09 22:38) [24]

Чуду дали задачу, чудо нашло решение простое, решенье было чудесным, но чудо чудес не поняло и на чудо наехало.


 
korneley ©   (2010-01-10 00:51) [25]


> Palladin ©   (09.01.10 22:38) [24]

Ну, дык, ёлы-палы, братушка :) У меня вообще стойкое ощущение, что после [5] Народ откровенно веселится... Праздник всё таки :) И потом, если человек (при данных ему направлениях) не желает понять почему round(2.5) = 2... Хэппи, как говорится, ему нью уеар!!!


 
Германн ©   (2010-01-10 02:28) [26]


> Ну, дык, ёлы-палы, братушка :) У меня вообще стойкое ощущение,
>  что после [5] Народ откровенно веселится...

А после [5] вообще сложно что-то еще придумать. :)
Я правда намекал на описание задачи, но сей юмор слишком пошлый, чтоб я его озвучил. :)


 
KilkennyCat ©   (2010-01-10 02:30) [27]

а я всегда веселюсь, не дожидаясь [5]


 
Германн ©   (2010-01-10 02:32) [28]


> KilkennyCat ©   (10.01.10 02:30) [27]
>
> а я всегда веселюсь, не дожидаясь [5]
>

Откуда у тебя столько денег? :)


 
KilkennyCat ©   (2010-01-10 02:36) [29]

у меня их просто нет.


 
Умник   (2010-01-10 07:48) [30]


> KilkennyCat ©   (09.01.10 02:31) [2]
> Жаль, что "орешник" не работает.


Кстати, а какая цель и предназначение орешника задумывалась изначально?


 
Anatoly Podgoretsky ©   (2010-01-10 16:05) [31]

> KilkennyCat  (10.01.2010 02:36:29)  [29]

Так ты на халяву?


 
Anatoly Podgoretsky ©   (2010-01-10 16:05) [32]

> Умник  (10.01.2010 07:48:30)  [30]

Простое, орехи колоть.



Страницы: 1 вся ветка

Текущий архив: 2010.03.28;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.012 c
2-1264524632
kalexi
2010-01-26 19:50
2010.03.28
В какую папку можно сохранять конфиги программы? Как ее отыскать?


2-1264319140
Jimmy
2010-01-24 10:45
2010.03.28
Проиграть два wav-файла


15-1262910051
DillerXX
2010-01-08 03:20
2010.03.28
Сопротивление...


2-1264184513
Alexey
2010-01-22 21:21
2010.03.28
ID3 теги и кодировка


2-1264626549
kalexi
2010-01-28 00:09
2010.03.28
Недопустимый дескриптор окна при закрытии приложения