Вопрос № 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 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Foxbox
Здравствуйте, Химик CH! Функция FloatToStrF как раз и нужна. Первый параметр принимает число для конвертации в сторку, второй параметр принимает тип конвертации. В Вашем случае нужен именно ffFixed - конвертация в строку где число будет отображаться с фиксированной точкой. Следующий параметр - общая длина строки, последний параметр - количество знакомест, отводимых под дробную часть. Есть ещё один параметр - установки форматирования, но вряд ли есть смысл с ним заморачиваться с Вашим уровнем знаний. Без
обид.
Приложение:
Ответ отправил: Foxbox (статус: 2-й класс)
Ответ отправлен: 27.11.2008, 09:31
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236861 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 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р.
По поводу индексов в RichEdit, нашёл в DRKB
такой код, проверил работает, выделяете символ и давите на нужную кнопку:
Приложение:
--------- Помогли тебе, помоги и ты.
Ответ отправил: Genia007 (статус: Студент)
Ответ отправлен: 27.11.2008, 11:00
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236868 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Спасибо, с функцией floattostrf разобрался, но индексы (по крайней мере в Делфи 7) не работают - большая часть используемых параметров у RichEdit не декларирована.
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.