Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/58: Рейтинг темы: голосов - 58, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 14.02.2013
Сообщений: 54
1

Количество знаков после точки

25.02.2013, 00:49. Показов 10770. Ответов 5
Метки нет (Все метки)

Как определить количество знаков после точки в числе с плавающей точкой?
P.S. Прошу прощения за то, что подобные темы уже были.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2013, 00:49
Ответы с готовыми решениями:

Выведите все корни квадратного уравнения с точностью ровно 7 знаков после десятичной точки
на вход даны действительные числа a,b,c. выведите все корни квадратного уравнения с точностью...

Количество знаков после запятой
Как ограничить кол-во знаков после запятой в процедуре вывода ? и как поместить функцию в модуль ?...

Ограничить количество знаков после запятой
Ребят, что нужно поменять чтобы после запуска в массиве получались числа с меньшим количеством...

Подсчитать количество символов до точки и после нее
1)В ряду есть одна точка с запятой(;) Подсчитать количество символов до точки и после нее....

5
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30916 / 20229 / 7885
Регистрация: 22.10.2011
Сообщений: 35,107
Записей в блоге: 6
25.02.2013, 01:43 2
Зачем? Есть такое понятие, как погрешность представления вещественных чисел (Гугл знает, спроси у него, он завалит тебя информацией), если ты присваиваешь переменной какое-то значение, это совсем не значит, что именно это значение (и именно с таким количеством знаков после запятой) в переменой будет храниться, так что считаться будет неизвестно что, а не то, что ты задумал. Наоборот, нужно брать значение переменной, и округлять его до нужного количества знаков.
0
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 10
25.02.2013, 01:57 3
Цитата Сообщение от ProgRus Посмотреть сообщение
Как определить количество знаков после точки в числе с плавающей точкой?
Что подразумевается под словом определить? Если нужно выставить какое-то определенное количество символов при выводе, то нужно делать так:
Pascal
1
writeln(num:0:n)
где n это количество знаков после запятой, а num это число с плавающей точкой.
Если же необходимо узнать количество символов после запятой, то я бы делал через строку: переводишь число в строку -> находишь позицию точки используя pos() -> вычитаешь получившееся значение (позицию точки) из всего количества символов в строке:
Pascal
1
n := length(num) - pos(".",num);
где num это число с плав. точкой переведенное в строку, n это переменная типа integer где будет количество символов после запятой. как-то так, но это только если есть КОНЕЧНОЕ значение символов, если такого не имеется, то округляй сам.
0
2 / 2 / 0
Регистрация: 14.02.2013
Сообщений: 54
25.02.2013, 16:22  [ТС] 4
Написал такую функцию:
Pascal
1
2
3
4
5
6
7
8
9
{Функция определения количества знаков
после точки в числах с плавающей точкой}
function SignsOfFract (var s: string): integer;
begin
  if Pos('.',s)<>0 then
    SignsOfFract:=Length(s)-Pos('.',s)
  else
    SignsOfFract:=0;
end;
К сожалению, пришлось использовать в качестве входных данных строку. Пытался использовать на входе вещественное число и с использованием Str конвертировать в строку, но в дальнейшем не получается корректно определить количество знаков после запятой, так как число записывается в строку в примерно таком виде "-3.2648375386Е-01". Есть ли какие-нибудь другие пути?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30916 / 20229 / 7885
Регистрация: 22.10.2011
Сообщений: 35,107
Записей в блоге: 6
25.02.2013, 20:55 5
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
function SignsOfFract(Value : Real) : Integer;
var
   s : string;
   Len : Byte;
begin
   { Максимальная точность для Extended = 19-20 значащих цифр,
     главное - взять не меньше, чтобы ничего не усеклось.
     Лишнее справа заполнится нулями, которые мы потом проигнорируем }
   Str(Value:0:24, s);
   Len := Length(s);
   while s[Len] = '0' do Dec(Len);
   SignsOfFract := Len - Pos('.', s);
end;
Только потом не говори, что я тебя не предупреждал о том, о чем написано во втором посте. Если в дробной части числа будет показывать больше цифр, чем в том значении, которое ты занес в переменную (из-за той самой погрешности) - это будут твои проблемы...
1
2 / 2 / 0
Регистрация: 14.02.2013
Сообщений: 54
25.02.2013, 21:02  [ТС] 6
Спасибо, отлично))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2013, 21:02

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Подсчитать количество символов до точки с запятой и после нее
в строке имеется точка с запятой (;). Подсчитать количество символов до точки с запятой и после...

Подсчитать количество символов до точки с запятой и после нее.
В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и...

Дан текст из букв и знаков. Подсчитать общее количество цифр и знаков ‘+’,’-‘,’*’, входящих в текст.
Дан текст из букв и знаков. Подсчитать общее количество цифр и знаков ‘+’,’-‘,’*’, входящих в текст.

Выведите в выходной файл округленное до n знаков после десятичной точки число E
Выведите в выходной файл округленное до n знаков после десятичной точки число E. В данной задаче...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.