Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
!MSDN:
!The COM CY and Visual Basic Currency type is a signed 64-bit integer in units of 1/10,000 (or 1/100 of a cent).
!The currency type can accurately represent dollars and cents values, so it's good for financial calculations.
!The range of the currency type is more than +/- 900 trillion, so it'll even cover calculations of the national debt, at least for the foreseeable future.
!CURRENCY EQUATE(REAL)
!CY EQUATE(CURRENCY)
Подходит в принципе даже LONG LONG но вопрос сейчас встал - как засунуть в эти два лонга число REAL
Т.е. как с BSHIFT и т.д. разобраться с учетом что эти операции работают только с числом типа LONG
LONGLow = BAND(REAL,0FFFFFFFFh)
LONGHigh = BSHIFT(REAL,-32)
Я в ступоре...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Currency GROUP,TYPE
Low ULONG
High ULONG
END
Real2Currency PROCEDURE(REAL Price, *Currency Result)
Cnt LONG
CODE
CLEAR(Result.Low)
CLEAR(Result.High)
LOOP Cnt = 64 TO 0 BY -1
IF Price >= 2^Cnt
IF Cnt >= 32
Result.High += 2^(Cnt-32)
ELSE
Result.Low += 2^Cnt
END
Price -= 2^Cnt
END
END
Еще по ходу работы нарвались на такой финт Кларионовских неявных преобразований типов.
Выполнить и задуматься...