прочитал, спасибо. понял, что: порядок 11 бит, а мантисса 52 бита.(64 бита, если) то есть что бы получить число надо мантиссу * 10^порядка. а потом сравнить, что то.Но ведь это долго будет сильно. а по короче путь есть? А то надо узнать остаток от деления двух memint64, а для этого приходиться ложить всё в ФПУ, делить, вылаживать из ФПУ, приводить в нормальный вид, а потом сранивать.(да и то не сильно ясно как, привести и сравнить).
О формате см. IA-32, часть 1 Узнать целое ли число проще с помощью FPU, чем разбирать битовые поля на АЛУ Код (Text): fld num fld st0 frndint ;округляем до целого fcomip st0,st1 ;сравниваем fstp st0 jz IsInt А если на АЛУ, то нужно 1) сделать проверку 64-бит на 0 (если да, то на выход) 2) определить несмещенный порядок и сравнить с 0 (если меньше, то на выход) 3) проверить 52 минус порядок младших бит - если все нули, то целое
IceStudent А где искал то ? Во-первых, есть тормозная инструкция FPREM, вычисляющая значение st0 = st0-trunc(st0/st1)*st1 Во-вторых, можно тоже самое проделать быстрее ручками. Тут единственное неудобство - по умолчанию стоит режим округления до ближайшего целого, а тут нужно округлять вниз, поэтому приходится либо перезагружать управляющий ворд (FNSTCW+FLDCW х2), либо добавлять анализ на больше\меньше