Основные понятия и элементы


Типы данных, точность вычислений и переполнения

        Все внутренние вычисления с целыми числами выполняются с С-типом long, все внутренние вычисления с числами с плавающей запятой выполняются с С-типом double.

        В общем случае, обнаружение переполнения и исчезновения значения при операциях с целыми числами зависит от поведения функций конкретной библиотеки С, и потому для промежуточных результатов не может считаться надежным. Переполнение и исчезновение значения при операциях с числами с плавающей запятой обнаруживаются на аппаратном уровне, что обычно надежно обеспечивается.

        При необходимости выполняются преобразования внутренних представлений операндов между целыми, строковыми и с плавающей запятой. При арифметических вычислениях используются целые числа до тех пор, пока не будет подставлено или указано число с плавающей запятой. После этого тип данных будет с плавающей запятой.

        Числа с плавающей запятой возвращаются либо с точкой, либо с буквой е, так что они заведомо не похожи на целые значения. Например:

        ехрr 5 / 4

вернет «1», тогда как

        ехрr 5 / 4.0

        ехрr 5 / ( [string length "abcd"] + 0.0 )


оба вернут 1.25.

        Выражение

        ехрr 20.0/5.0

вернет 4.0, а не 4.

        Операции со строками

        Операторы сравнения могут работать со строковыми аргументами, хотя при вычислении выражений аргументы по возможности интерпретируются как целые или числа с плавающей запятой. Если один из операндов строковый, а другой — число, то числовой операнд будет конвертирован в строковый. Например, обе команды

        ехрr {"0x03" > "2"}

        ехрr {"0у" < "0x12"}


вернут 1. При этом первое сравнение будет выполнено как сравнение чисел, а второе будет выполнено как сравнение строк, после того как второй операнд будет преобразован в строку 18.

        Если необходимо сравнить аргументы именно как строки, а операнды могут быть восприняты неоднозначно, то рекомендуется использовать команду string compare вместо операторов вида ==.
Hosted by uCoz