Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2007, 19:18   #1
natasha
Пользователь
 
Регистрация: 21.01.2007
Сообщений: 15
По умолчанию Пожалуйсто, срочно помогите!

Пожалуйсто, срочно помогите!
При деление
n := 1370*0,875912408759124/300;
где n: real;
результат автомотически округляет до 4 (n = 4)
а мне надо результат без погрешности т.е. n = 3.99999999999999
т.к. дальше я делаю n := trunc(n)
и должно получиться 3, а т.к. он округлил, то получается
4 и в дальнейшем все мой вычисления идут не правильно.
Может дело в типе данных ?
пожайлусто Help!!!
Спрочно!!!!

Последний раз редактировалось natasha; 21.01.2007 в 19:24.
natasha вне форума Ответить с цитированием
Старый 21.01.2007, 19:24   #2
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Я думаю что проблема все таки в типе Real. Должно же там быть ограничение по кол-ву знаков... Попробуй 1370*0,8759124087/300. Это на Паскале. На делфи же точность больше: 1370*0.87591240875912/300.
ICQ: 5311314
[SIGPIC][/SIGPIC]

Последний раз редактировалось AVer; 21.01.2007 в 19:29.
AVer вне форума Ответить с цитированием
Старый 21.01.2007, 19:35   #3
natasha
Пользователь
 
Регистрация: 21.01.2007
Сообщений: 15
По умолчанию деление


число 0,875912408759124 получается при вычислениях (это переменная тоже типа Real)
я не могу (и не знаю как) отбросить последние знаки,
перепробывала типы (Real,Single,Double,Extended,Comp,C urrency)
результат тот же,
Помоги, пожалуйсто!!!
natasha вне форума Ответить с цитированием
Старый 21.01.2007, 19:46   #4
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Удаление одного знака выглядит так:
Код:
Var R:Real;
Begin
R:=100000000000000*0.875912408759124;
R:=Trunc(R);
R:=R/100000000000000;
End;
Думаю понятно, что чем больше знаков надо удалить, тем меньше нулей при умножении и делении.
ICQ: 5311314
[SIGPIC][/SIGPIC]
AVer вне форума Ответить с цитированием
Старый 22.01.2007, 10:47   #5
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

Код:
n:= 1370*0.875912408759124/300;
caption:= Inttostr(trunc(n));
в Delphi дает '3'.

в Borland Pascal
Код:
n:= 1370*0.875912408759124/300;
writeln(trunc(n));
-> '4' для real;
но '3' - для double
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 22.01.2007, 12:32   #6
Albenous
Helper
Форумчанин
 
Аватар для Albenous
 
Регистрация: 10.12.2006
Сообщений: 109
По умолчанию

Э-э-э... чего-то я не догоняю...
Цитата:
-> '4' для real;
но '3' - для double
почему 4 - то, а там 3? (не проверял, объясните)
Глупых вопросов не бывает - бывают глупые ответы.
Albenous вне форума Ответить с цитированием
Старый 22.01.2007, 12:39   #7
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Потому что для типа Real есть ограничение по кол-ву символов (возможно после запятой - не знаю точно) и когда число его привышает, то оно автоматически округляется.
ICQ: 5311314
[SIGPIC][/SIGPIC]
AVer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
деление многочленов oleiiika Паскаль, Turbo Pascal, PascalABC.NET 1 21.06.2008 16:30
Умножение и деление StiTch_Parazit Помощь студентам 10 20.05.2008 14:32
НЕ целочисленное деление Infernal13 Помощь студентам 16 30.04.2008 15:46
Деление графа на куски Tito Помощь студентам 1 22.12.2007 22:59
Цлочисленное деление в С# Наташка Общие вопросы C/C++ 1 05.06.2007 21:44