Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: как выделить целое?

  1. #1

    По умолчанию как выделить целое?

    подскажите, как выделить целое из реального числа. не округлить, а именно целое.
    пример 27,42 -> 27 или 65,98 -> 65.

  2. #2

    По умолчанию

    a: real; Исходное число
    b: DINT; результат

    код:

    b:=REAL_TO_DINT(a);
    if (a>=0) then
    if (DINT_TO_REAL(b)>a) then
    b:=b-1;
    end_if
    else
    if (DINT_TO_REAL(b)<a) then
    b:=b+1;
    end_if
    end_if



    Вот так правильнее при отриц. числах
    Последний раз редактировалось Филоненко Владислав; 24.12.2008 в 20:46.

  3. #3

    По умолчанию

    филоненко владислав, спасибо.

  4. #4

    По умолчанию

    ток с отрицательными пришлось переделать...
    b:=REAL_TO_DINT(a);
    if (DINT_TO_REAL(b)>a) and b>0 then
    b:=b-1;
    end_if
    if (DINT_TO_REAL(b) < a ) and b<0 then
    b:=b+1;
    end_if
    ps пордон не увидел. страницу не обновлял....
    еще раз спасибо за идею.

  5. #5

    По умолчанию

    а чем оператор Trunc не подходит?

  6. #6

    По умолчанию

    игорь петров, очень даже подходит! ток я про него не сном, не духом. спасибо за наводку.

  7. #7
    Пользователь Аватар для Роман26
    Регистрация
    30.01.2009
    Адрес
    Россия, Ставрополь
    Сообщений
    80

    По умолчанию

    REAL_TO_INT округляет до ближайшего целого, а TRUNC извлекает целое.

    А подскажите пожалуйста, как округлить число до одного знака после запятой? К примеру:
    26.83781 -> 26.8
    26.88781 -> 26.9
    Ремонтно-строительная компания, г.Ставрополь

  8. #8

    По умолчанию

    Умножить на 10 > взять целое > разделить на 10.

  9. #9
    Пользователь Аватар для Роман26
    Регистрация
    30.01.2009
    Адрес
    Россия, Ставрополь
    Сообщений
    80

    По умолчанию

    Большое спасибо! Отличная идея!)
    Ремонтно-строительная компания, г.Ставрополь

  10. #10

    По умолчанию Правильное округление (без переполнения)

    out:=INT_TO_REAL(REAL_TO_INT((t-TRUNC(t))*10))/10+TRUNC(t);
    Последний раз редактировалось Okmor; 01.06.2011 в 17:49.

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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