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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2015, 19:01   #1
Cheerful Mushroom
Новичок
Джуниор
 
Регистрация: 30.03.2015
Сообщений: 4
Восклицание Число после запятой

У меня есть такая задача: вводятся 2 числа M и N так, что M<N (я делал на примере 3 и 14). Мне надо вывести на экран число после запятой, но мне выводят такую ошибку: "Program1.pas(9) : Ошибка времени выполнения: Значение было недопустимо малым или недопустимо большим для Int32.".
Ни малейшего понятия почему так происходит. Ну а если существует оператор, выводящий число после запятой, то напишите его пожалуйста.
Заранее спасибо.


Код:
program test1;
var M,N:integer;
var Ch:uint64;
var D:real;
begin
  read(M,N);
  D:=M/N;
  writeln(D);
  Ch:= round(d*exp(15*ln(10)));
  writeln(Ch)
end.

Последний раз редактировалось Stilet; 30.03.2015 в 19:59.
Cheerful Mushroom вне форума Ответить с цитированием
Старый 30.03.2015, 19:12   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

С трудом понял, что вам надо.
Может быть это?
Код:
 WriteLn(Frac(M/N));
При M=3, N=14 выведет 0.214285714285714
И если M=45, N=14 тоже 0.214285714285714

Последний раз редактировалось type_Oleg; 30.03.2015 в 19:18.
type_Oleg вне форума Ответить с цитированием
Старый 30.03.2015, 19:12   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А какой ответ Вы ожидаете?
Вот скормили программке 3 и 14. Что она должна вернуть?
Poma][a вне форума Ответить с цитированием
Старый 30.03.2015, 20:50   #4
Cheerful Mushroom
Новичок
Джуниор
 
Регистрация: 30.03.2015
Сообщений: 4
По умолчанию

Ну вот я ввел 3 и 14 а вывести она должна 214285714285714, то есть то, что после точки

Последний раз редактировалось Cheerful Mushroom; 30.03.2015 в 20:54.
Cheerful Mushroom вне форума Ответить с цитированием
Старый 30.03.2015, 21:13   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Cheerful Mushroom Посмотреть сообщение
Ну вот я ввел 3 и 14 а вывести она должна 214285714285714, то есть то, что после точки
Ну вам же ответили http://www.programmersforum.ru/showp...64&postcount=2
Вадим Мошев вне форума Ответить с цитированием
Старый 30.03.2015, 21:20   #6
Cheerful Mushroom
Новичок
Джуниор
 
Регистрация: 30.03.2015
Сообщений: 4
По умолчанию

Не, мне нужно не "0.214285714285714" , а "214285714285714".
Я сначала думал, что достаточно просто домножить 0.214285714285714 на 10^15 , но pascal выводил ошибку (которая описана в начале темы).
Cheerful Mushroom вне форума Ответить с цитированием
Старый 30.03.2015, 21:42   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Тогда переводите число в строку, убирайте первые два символа и выводите то, что останется на экран
Код:
program test1;
var M,N:integer;
	 	Ch:string;
 		D:real;

begin
  read(M,N);
  D:=M/N;
  
  str(D:5:10, Ch);
  delete(ch, 1, 2);
  WriteLn(Ch);
  
end.
Вадим Мошев вне форума Ответить с цитированием
Старый 30.03.2015, 21:51   #8
Cheerful Mushroom
Новичок
Джуниор
 
Регистрация: 30.03.2015
Сообщений: 4
По умолчанию

Все. Огромное вам спасибо
Cheerful Mushroom вне форума Ответить с цитированием
Старый 30.03.2015, 21:55   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Пожалуйста .
Вадим Мошев вне форума Ответить с цитированием
Старый 30.03.2015, 22:30   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Ну вот я ввел 3 и 14 а вывести она должна 214285714285714
так устроит?
Код:
program test1;
var M,N:integer;
var D:extended;
  s : string;
begin
{  read(M,N);}
  M:=3; N:=14;
  D:=M/N;
  WriteLn(D:0:16);
  str(frac(D):1:18,s);
  writeln(copy(s,3,Length(s)-3));
  Readln  
end.

уп-с... опоздал...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничить число символов после запятой kort95 Общие вопросы Delphi 3 24.12.2013 19:27
Число знаков после запятой при считывании из Excel Symple me C++ Builder 4 13.06.2013 11:48
Как округлить вещественное число до 2 знаков после запятой roxy7 Microsoft Office Excel 2 06.12.2011 22:15
Число знаков после запятой в DBGrid nikta БД в Delphi 10 23.05.2010 14:58
как вывести число с ограниченным количеством цифр после запятой? delphi Ensoph Помощь студентам 1 02.10.2007 07:50