Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.005 c
1-1246435353
iFynk
2009-07-01 12:02
2010.03.28
DLL и контролы


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


2-1264361195
Дмитрий
2010-01-24 22:26
2010.03.28
Scrollbar на panel


4-1231611546
AzzHell
2009-01-10 21:19
2010.03.28
Как узнать размер большого файла


1-1244383848
dmitry_12_08_73
2009-06-07 18:10
2010.03.28
При копировании экрана ее удаётся захватить окно со свойством For





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский