Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.11.2010, 17:39
dark89 dark89 вне форума
Прохожий
 
Регистрация: 13.11.2010
Сообщения: 10
Репутация: 10
По умолчанию Помогите с дробями!

Здравствуйте, подскажите пожалуйста как дробные числа отображать без целого? Например есть 12,3456 должно быть 3456.
Ответить с цитированием
  #2  
Старый 13.11.2010, 18:10
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

a:=12.3456;
b:=a-trunc(a); // b=0.3456
дальше можно через str перевести в строку и удалить первые два символа.
Думаю так
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 13.11.2010, 18:27
ivann ivann вне форума
Прохожий
 
Регистрация: 29.08.2010
Сообщения: 16
Репутация: 10
По умолчанию

2 варианта
1. Округлить используя Round
2. Перевести в строку DoubleTostr и разделить
Ответить с цитированием
  #4  
Старый 13.11.2010, 18:40
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

ещё вариант:
Код:
function GetFracPart(A: Extended): String;
begin
  Result := FloatToStr(A);
  Delete(Result, 1, Pos(',', Result));
end;
Ответить с цитированием
  #5  
Старый 14.11.2010, 10:45
dark89 dark89 вне форума
Прохожий
 
Регистрация: 13.11.2010
Сообщения: 10
Репутация: 10
По умолчанию

Спасибо, помогло. Не подскажите еще как сделать так, чтобы при делении к примеру 30/60 ответ был 0,50 а не 0,5?
Ответить с цитированием
  #6  
Старый 14.11.2010, 11:27
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Цитата:
Сообщение от dark89
Не подскажите еще как сделать так, чтобы при делении к примеру 30/60 ответ был 0,50 а не 0,5?
Если нужно именно двухзначное число после запятой, то попробуй как-нибудь так:
Код:
function AddZero(const S: String): String;
begin
  if Pos(',', S) = 0 then // если дробной части нет вообще
    Result := S + ',00'   // добавляется два нуля
  else
    begin
      if Length(S) - Pos(',', S) = 1 then // если после запятой 1 знак
        Result := S + '0'  // в конце добавляется 0
      else           // если всё как надо,
        Result := S; // то остаётся без изменений
    end;
end;
написал первое что в голову пришло, так что наверное нужно ещё доточить этот код перед использованием.

Последний раз редактировалось ryderx34, 14.11.2010 в 11:31.
Ответить с цитированием
  #7  
Старый 14.11.2010, 13:01
dark89 dark89 вне форума
Прохожий
 
Регистрация: 13.11.2010
Сообщения: 10
Репутация: 10
По умолчанию

Спасибо большое.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter