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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2014, 14:43   #11
Foreseen
Техножрец
Форумчанин
 
Аватар для Foreseen
 
Регистрация: 04.07.2014
Сообщений: 289
По умолчанию

А как быть "через строку" с подобным числом -123,0010305? Слишком много If, код явно не будет изящным, как хотел топикстартер.
— Двери есть везде. Просто нужно знать, как в них войти.
Foreseen вне форума Ответить с цитированием
Старый 07.07.2014, 14:49   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для изящества не проблем, проблема в смысле
Код:
var i: int64;
    s: String;
..
  s:='-123,0010305';
  i:=StrToIntDef(Copy(s,Pos(',',s)+1,Length(s)),0);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.07.2014, 15:02   #13
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Ого как разошлась тема, написал уже сам, но думаю может кому пригодится:

Код:
function RealToInt(Num: Real): String;
var
	i:integer;
	source:string;
begin
	source := StringReplace(FloatToStrF(Num, ffFixed, 12, 8), ',', '', [rfReplaceAll]);
	for I:= 1 to length(source) do
		if source[i] = '0' then
			delete(source,i,1)
		else begin
			result := source;
			break;
		end;
end;
Winexcel вне форума Ответить с цитированием
Старый 07.07.2014, 15:18   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

проверьте:
Код:
var r : real;
begin
  r := 990000000.001456;
  Edit1.Text := FloatToStr(r);
  Edit2.Text := RealToInt(r);
end;

p.s. как говорил один мой приятель: - "программа работает в целом, прокалываясь в мелочах"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.07.2014, 15:38   #15
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Winexcel Посмотреть сообщение
Ого как разошлась тема, написал уже сам, но думаю может кому пригодится:

Код:
function RealToInt(Num: Real): String;
var
	i:integer;
	source:string;
begin
	source := StringReplace(FloatToStrF(Num, ffFixed, 12, 8), ',', '', [rfReplaceAll]);
	for I:= 1 to length(source) do
		if source[i] = '0' then
			delete(source,i,1)
		else begin
			result := source;
			break;
		end;
end;
И неужто работает? Не верю!
northener вне форума Ответить с цитированием
Старый 07.07.2014, 17:25   #16
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
function RealToInt(Num: Real): String;
вопрос темы, имя функции, результат ... кто на ком стоял?
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
действительное число с плавающей точкой, его модуль и квадрат (pascal ABC) программирование Помощь студентам 1 01.05.2013 22:15
Сложности с плавающей точкой Drozd-A Помощь студентам 3 13.10.2011 09:10
Числа с плавающей точкой [MI_nor] Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 11.04.2011 11:53
помогите с плавающей точкой Egory4 Помощь студентам 5 01.11.2009 14:48
Ошибка с плавающей точкой Vistar Паскаль, Turbo Pascal, PascalABC.NET 5 06.05.2009 19:47