|
Целые числа и числа с плавающей точкойВ 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 |