• Belkin © (03.07.17 20:28) [0]
    Как работает эта функция???

    Хочу просто вывести вещ.число с двумя знаками после запятой:
    FloatToStrF(X, ffGeneral, 4, 2)

    Перебрал разные варианты с Precision и Digits - получается какая-то длинная  ерундень с E.

    Help me please!
  • FloatToStrF (03.07.17 20:54) [1]
    Посмотри здесь, все детали разобраны
    http://www.delphibasics.ru/FloatToStrF.php
    и здесь
    http://www.studfiles.ru/preview/2582135/
  • Dimka Maslov © (03.07.17 22:24) [2]
    Напиши свою функцию. С этим и этими.
    Вот алгоритм
    1. Умножить вещественное число на 100 (сто).
    2. Взять его целую часть и преобразовать в целое число.
    3. Целое число преобразовать в строку.
    4. В третью с конца позицию вставить десятичный разделитель.
    5. ????????
    6. PROFIT!!!
  • Германн © (04.07.17 01:32) [3]
    2 Belkin ©   (03.07.17 20:28)

    > Хочу просто вывести вещ.число с двумя знаками после запятой:

    Тогда используй формат ffFixed, а не ffGeneral.
  • dmk © (04.07.17 01:36) [4]
    Мою возьми: http://pda.delphimaster.net/?id=1492345608&n=3
    Она нормально все выводит.
  • Belkin © (04.07.17 08:19) [5]
    Получается, я не могу при помощи стандартной FloatToStrF просто вывести 6,931878485 как 6,93? или 15,80395171818 как 15,80 ??
  • dmk © (04.07.17 09:17) [6]
    Почему это?
    Result := FloatToStrF(Value, ffNumber, 18, 2);
  • Belkin © (04.07.17 10:08) [7]
    dmk, спасибо за ответ! Почему 18?  Почему ffNumber, а не ffFixed?
  • Strelkin (04.07.17 11:50) [8]
    Потому что хелп - для лохОв
  • Rouse_ © (04.07.17 16:16) [9]
    Работает через разложение в BCD строку, остальное банально нюансы
  • manaka © (04.07.17 19:38) [10]
    Удалено модератором
  • manaka © (04.07.17 19:39) [11]

    > Хочу просто вывести вещ.число с двумя знаками после запятой:


    куда вывести? для дальнейших расчетов или просто на экран?
  • manaka © (04.07.17 19:43) [12]

    > Dimka Maslov ©   (03.07.17 22:24) [2]
    > Напиши свою функцию. С этим и этими.
    > Вот алгоритм
    > 1. Умножить вещественное число на 100 (сто).
    > 2. Взять его целую часть и преобразовать в целое число.
    > 3. Целое число преобразовать в строку.
    > 4. В третью с конца позицию вставить десятичный разделитель.
    >
    > 5. ????????
    > 6. PROFIT!!!


    1. Преобразуем число в строку
    2. Находим вхождение "." в строке (пусть будет N)
    3. Результат - исходная строка длиной N+2

    На целый пункт короче !!!! И быстрее (наверное, не проверяла, лень)
  • manaka © (04.07.17 19:46) [13]

    > manaka ©   (04.07.17 19:39) [11]
    > куда вывести? для дальнейших расчетов или просто на экран?


    С округлением или без?


    > Strelkin   (04.07.17 11:50) [8]
    > Потому что хелп - для лохОв


    +1
  • Dimka Maslov © (05.07.17 11:23) [14]

    > На целый пункт короче !!!


    Мы же не ищем лёгких путей.
Есть новые Нет новых   [118427   +8][b:0][p:0.001]