При помощи каких ф-ций АСМ или АПИ можно округлить число?

Тема в разделе "WASM.ASSEMBLER", создана пользователем Valentin, 26 апр 2008.

  1. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    128
    При помощи каких ф-ций АСМ или АПИ можно заокруглить число до 2-х или трех знаков?
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Valentin
    WIN APi нет для этого!
    ASM тем более.
    делай сам програмно это!
    вломы??
     
  3. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Valentin
    Это только сопроцессор - плавающая арифметика. В норме умножить на 100(2 цифры) 1000(3), загрузить как целое и поделить назад... В принципе при выводе можно это сделать, но только надо добавть при выводе что-то типа 0.005 или 0.0005 В языках есть функция round(округление), но в асм и API ее нет :-(
     
  4. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    128
    valterg

    Спасибо.
    Но если я ввожу в Ед-контрол =1,2 или 0,366 ( не целое число).
    И далее также.....
    Вычисляю при помощи встроенного калькулятора.
    Как заокруглить результат???????
     
  5. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Я делал субклассинг контрола и просто не допускал ввода ненужного мне числа.
    Ну например,фиксированный формат числа. ##.### все что не подходит под формат просто не вводится.
    Ввести два раза символ "." MD, более 3 знаков после него тоже MD.
     
  6. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    128
    S_Alex

    Не вводить последние знаки - не означает заокруглить.
    Это просто -отсечь.
    1,0515=1,052 Вот что нужно.
     
  7. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Valentin
    Округление до третьей цифры после запятой = складываешь с 0,0005 и выводишь три последних знака
    1,0510+0,0005=1,051
    1,0514+0,0005=1,051
    1,0515+0,0005=1,052
    1,0519+0,0005=1,052
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    мм, "функции асм" это полюбому круто
     
  9. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    128
    Всем спасибо.
    Нашел и реализовал АПИ;
    invoke FpuFLtoA, 0, 3, ADDR aNum, SRC1_FPU
    где в данном случае второй параметр округляет до 3-х цифр после запятой, а в переменной aNum (з-й параметр) хранится число в текстовом формате, которое нужно заокруглить.