10.7. Рациональная арифметика

CLIP поддерживает использование рациональных чисел с неограниченной точностью. Чтобы воспользоваться этой возможностью нужно написать где-нибудь в программе

set(_SET_RATIONAL,.t.)

или в виде команды, описанной в clip.ch

SET RATIONAL ON

Компилятор не поддерживает константы - длинные числа, то есть при использовании подобного выражения

x := 123456789012345678901234567890

компилятор сделает попытку преобразования в тип double, и только сопроцессору известно что из этого получится. Чтобы реально использовать длинные константы, необходимо использовать функцию VAL(). Например:

x:=val("123456789012345678901234567890")
x:=val("1234.567890")
x:=val("1/3")

Функция STR() теперь поддерживает параметры len, dec любого размера. Например:

? str(val("7/3"),1000,990)

Также добавлена функция RSTR(), которая возвращает строку в виде числитель/знаменатель:

? rstr(val("7/3")+val("5/6")) // 19/6