Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
z = BigDecimal("1.2")if (x - y) == z puts "равны" # Печатается "равны"!else puts "не равны"endа = x*y*za.to_s # "0.768Е1" (по умолчанию: научная нотация)a.to_s("F") # "7.68" (обычная запись)Если необходимо, можно задать число значащих цифр. Метод
precsx = BigDecimal ("1.234",10)y = BigDecimal("1.234",15)x.precs # [8, 16]y.precs # [8, 20]В каждый момент число использованных байтов может оказаться меньше максимального. Максимум может также оказаться больше запрошенного вами (поскольку
BigDecimala = BigDecimal("1.23456")b = BigDecimal("2.45678")# В комментариях "BigDecimal:objectid" опущено.c = a+b # <'0.369134Е112(20)>c2 = a.add(b,4) # <'0.3691Е1',8(20)>d = a-b # <'-0.122222E1',12(20)>d2 = a.sub(b,4) # <'-0.1222E1',8(20)>e = a*b # <'0.30330423168E116(36)>e2 = a.mult(b,4) # <'0.3033E1',8(36)>f = a/b # <'0.502511417383729922907221E0',24(32)>f2 = a.div(b,4) # <'0.5025E0',4(16)>В классе
BigDecimalfloorabs%**<==В модуле
BigMathEPIsincosexpBigDecimalbigdecimal/math BigMathbigdecimal/jacobianbigdecimal/ludcmp LUSolvebigdecimal/newton nlsolvenormВ настоящей главе эти подбиблиотеки не описываются. Для получения дополнительной информации обратитесь к сайту ruby-doc.org или любому подробному справочному руководству.
5.9. Работа с рациональными числами
Класс
RationalДля создания рационального числа мы вызываем специальный метод
Rationalr = Rational(1,2) # 1/2 или 0.5s = Rational(1,3) # 1/3 или 0.3333...t = Rational(1,7) # 1/7 или 0.14...u = Rational(6,2) # "то же самое, что" 3.0z = Rational(1,0) # Ошибка!Результатом операции над двумя рациональными числами, как правило, снова является рациональное число.
r+t # Rational(9, 14)r-t # Rational(5, 14)r*s # Rational(1, 6)r/s # Rational(3, 2)Вернемся к примеру, на котором мы демонстрировали неточность операций над числами с плавающей точкой (см. раздел 5.4). Ниже мы выполняем те же действия над рациональными, а не вещественными числами и получаем «математически ожидаемый» результат:
x = Rational(1000001,1)/Rational(3,1000)y = Rational(3,1000)*xif y == 1000001.0 puts "да" # Теперь получаем "да"!else puts "нет"endКонечно, не любая операция дает рациональное же число в качестве результата:
x = Rational (9,16) # Rational(9, 16)Math.sqrt(x) # 0.75x**0.5 # 0.75x**Rational(1,2) # 0.75Однако библиотека
mathn5.10. Перемножение матриц
Стандартная библиотека
matrixMatrixVector
