Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Шичко Игорь
Статус: Практикант
Рейтинг: 196
∙ повысить рейтинг >>
Виктор Пырлик
Статус: Профессионал
Рейтинг: 47
∙ повысить рейтинг >>
Genia007
Статус: Студент
Рейтинг: 46
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1244
от 02.12.2008, 00:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 407, Экспертов: 50
В номере:Вопросов: 1, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 151987: Здравствуйте, уважаемые эксперты! Вопрос по поводу вывода данных. Пишу программу, считающюю рН и концентрации веществ и ионов в растворе (можете ознакомиться с <a href="http://rusfaq.ru/upload/1100" target="_blank">программой</a>) Как можно ...


Вопрос № 151.987
Здравствуйте, уважаемые эксперты!
Вопрос по поводу вывода данных.
Пишу программу, считающюю рН и концентрации веществ и ионов в растворе (можете ознакомиться с программой)
Как можно преобразовать в строку данные с заданной точностью:
рН должен выводиться с абсолютной точностью 0,00001 (5 знаков после запятой и никакой экспоненциальной формы, в сучае если значение по модулю меньше 0,00001 выводить 0, а не, например, 1,247е-10, так как такой точности программа всё равно не даёт)
Концентрации должны выводиться с точнстью 6 значащих цифр (малые числа выводить в экспонентциальной форме)

Вроде, должно делаться функцией FloatToStrF, но не могу разобраться с её параметрами (в help не смог разобраться, что за что и как отвечает). Или, может, есть более подходящая функция?
Заранее благодарен за ответ.

Кстати, можно ли реализовать вывод данных с верхними и нижними индексами в memo или подобный ком понент (так и не нашёл подобных функции в RichEdit)
пример подобной строки:
[SO42-]= 0,010976
Отправлен: 27.11.2008, 00:00
Вопрос задал: Химик CH (статус: Практикант)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Del
Здравствуйте, Химик CH!

Попробуйте, к примеру, Format('%1.5f', [Значение])
%1.5f - означает, что надо вывести Float с точностью 5 знаков после запятой. Сразу предупреждаю - будет округлять.
---------
Только массовые расстрелы спасут Родину!
Ответ отправил: Del (статус: 2-й класс)
Ответ отправлен: 27.11.2008, 07:28

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236854 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Foxbox
    Здравствуйте, Химик CH!
    Функция FloatToStrF как раз и нужна.
    Первый параметр принимает число для конвертации в сторку, второй параметр принимает тип конвертации. В Вашем случае нужен именно ffFixed - конвертация в строку где число будет отображаться с фиксированной точкой. Следующий параметр - общая длина строки, последний параметр - количество знакомест, отводимых под дробную часть. Есть ещё один параметр - установки форматирования, но вряд ли есть смысл с ним заморачиваться с Вашим уровнем знаний. Без обид.

    Приложение:

    Ответ отправил: Foxbox (статус: 2-й класс)
    Ответ отправлен: 27.11.2008, 09:31

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236861 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 3


    Отвечает: Genia007
    Здравствуйте, Химик CH!
    Функция FloatToStrF(Value:Extended; Format: TFloatPormat; Precision, Digits: Integer) : String;
    Преобразует вещественное значение Value в строку символов с учетом формата Format и параметров precision и Digits
    Правила использования параметров функции FloatToStrF

    Значение Format Описание

    ffExponent Научная форма представления с множителем ехх (“умножить на 10 в степени XX”).
    precision задает общее количество десятичных цифр мантиссы,
    Digits - количество цифр в десятичном порядке хх.
    Число округляется с учетом первой отбрасываемой цифры:3,1416Е+00

    ff Fixed Формат с фиксированным положением разделителя целой и дробной частей,
    precision задает общее количество десятичных цифр в представлен ии числа.
    Digits - количество цифр в дробной части.
    Число округляется с учетом первой отбрасываемой цифры:3,14

    ff General Универсальный формат, использующий наиболее удобную для чтения форму
    представления вещественного числа.
    Соответствует формату ff Fixed,
    если количество цифр в целой части меньше или равно precision,
    а само число - больше или равно 0,00001,
    в противном случае соответствует формату ff Exponent: 3,1416

    ffNumber Отличается от ffFixed использованием символа-разделителя тысяч
    при выводе больших чисел (для русифицированной версии Windows
    таким разделителем является пробел). Для value = П *1000 получим 3 141,60

    ffCurrency Денежный формат. Соответствует ffNumber, но в конце строки ставится
    символ денежной единицы (для русифицированной версии Windows - символы “р.”).
    Для value = я*1000 получим 3 141,60р.


    Пример: FloatToStrF(25,0124578639, ffFixed, 6, 2) даст - 25,01.

    По поводу индексов в RichEdit, нашёл в DRKB такой код, проверил работает, выделяете символ и давите на нужную кнопку:

    Приложение:

    ---------
    Помогли тебе, помоги и ты.

    Ответ отправил: Genia007 (статус: Студент)
    Ответ отправлен: 27.11.2008, 11:00

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236868 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Спасибо, с функцией floattostrf разобрался, но индексы (по крайней мере в Делфи 7) не работают - большая часть используемых параметров у RichEdit не декларирована.


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное