Целые числа и числа с плавающей точкой

В Scilab числовая переменная по умолчанию имеет тип вещественного числа с плавающей точкой, для представления которого в памяти используется 64 бита. Даже если при создании переменной ей присваивается целое значение, переменная будет иметь тип с плавающей точкой. На практике целые значе­ния в интервале [—252, 252] можно без особых опасений хранить в вещественных переменных, так как Scilab в этом случае гарантирует точность выполнения операций. Например, в следующем фрагменте мы производим точное сложение двух больших целых чисел, лежащих в пределах интервала [—252, 252] и убеждаемся, что потери точности не происходит:

-->а =2^40 - 12

а =

1099511627764.

 -->b =2^45 + 3

b =

35184372088835.

 -->с  = а + b

с =

36283883716599 .

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

-->(2  -  53  +  (1 : 10)) '

ans =

9007199254740992. 9007199254740994. 9007199254740996. 9007199254740996. 9007199254740996. 9007199254740998. 9007199254741000. 9007199254741000. 9007199254741000. 9007199254741002.

            В следующем примере мы вычислим значение 252, с использованием арифметики с плавающей точкой и 16-битных целых чисел. В первом случае перепол­нения не происходит, даже несмотря на то, что значение находится на границе диапазона 64-битных чисел с плавающей точкой. Напротив, во втором случае результат оказывается неверным, так как значение 252, непредставимо в рамках 16 бит.

-->2  ^ 52

ans =

4503599627370496.

 -->uintl6(2 ^ 52)

ans =

0

© vse-o-scilab

Сделать бесплатный сайт с uCoz