합리적 데이터 유형
Rational data type일부 프로그래밍 언어는 반올림 없이 1/3 및 -11/17과 같은 합리적인 숫자를 나타내고, 그에 대한 산수를 할 수 있는 내장(원시적) 합리적 데이터 유형을 제공한다.예는 다음과 같다.ratio
Common Lisp의 유형, 그리고 Mathematica와 Mapane과 같은 대수적 계산을 위해 대부분의 언어에 의해 제공되는 유사한 유형.합리적인 유형이 내장되어 있지 않은 많은 언어들은 여전히 그것을 라이브러리 정의 유형으로 제공하고 있다.
표현
그러한 유형의 변수나 값은 일반적으로 분수 m/n으로 표시되며, 여기서 m과 n은 고정 또는 임의의 정밀도를 가진 두 정수다.언어에 따라 분모 n은 0이 아닌 것으로 제한될 수 있으며, 두 숫자는 축소된 형태로 유지될 수 있다(1을 제외한 공통 구분자는 없음).
합리적인 데이터 유형을 지원하는 언어는 대개 그러한 값을 구축하기 위한 특별한 구문을 제공하며, 또한 기본 산술 연산('+', '-', '×', '/', 정수 검정력)과 비교('=', '<') '''''''''로 확장하여 해당 언어에 의해 제공되는 연산자 과부하 설비를 통해 이에 작용한다.이러한 작업은 컴파일러에 의해 일련의 정수 기계 명령 또는 라이브러리 호출로 변환될 수 있다.지원은 포맷, 정수 또는 부동소수점 값으로 반올림 등의 다른 작업으로도 확장될 수 있다.수학에서와 같이, 그러한 언어들은 종종 정수 값을 단위 분모가 있는 합리적인 값과 동등한 것으로 해석한다.
언어 지원
내장 또는 코어 라이브러리:
- C++는 2011년 개정 이후 표준 라이브러리 헤더 내용의 형태로 컴파일 시간 합리적 산술에 대한 지원을 포함하고 있다.
- 클루주어는 합리적인 숫자로 산수를 할 수 있고 그것들을 나타내는 문자 그대로의 형태를 제공한다.
- Go는 표준 라이브러리의 패키지에 합리적인 숫자를 제공한다.
- J는 기본 언어로 합리적인 숫자를 제공한다.예를 들어,
1r3
3분의 1이다.J의 Rationals는 분자와 분모 모두에 임의의 정밀 정수를 사용하므로 임의의 정밀도 비정수가 허용된다.예를 들어.12683021339465478347804472r7322545784478161858100577
소수점 3 ~ 50 자리수의 제곱근을 나타낸다.[1] - 줄리아는 이성적인 운영자에게 이성적인 숫자를 제공하고
//
예를 들어,6//9 == 2//3 && typeof(-4//9) == Rational{Int64}
.[2] - 하스켈은
Rational
type, 이것은 정말로 의 별칭이다.Ratio Integer
(Ratio
다형성 유형으로서 합리적인 숫자를 구현한다.Integral
분자와 분모의 유형).분수는 % 연산자를 사용하여 생성된다.[3] - OCaml의 Num 라이브러리는 임의의 정밀한 합리적 숫자를 구현한다.
- 펄:
Math::BigRat
코어 모듈은 임의 추출된 합리적인 숫자를 구현한다.그bigrat
Pragma는 투명한 BigRat 지원을 켜는 데 사용될 수 있다. - 라쿠: 기본값으로 사용
Rat
[4] 타이프(제한된 값이 있는 숫자)FatRat
[5] 데이터 유형은 임의로 구분되는 합리적인 숫자를 구현한다. - Python 2.6+: Python의 표준 라이브러리에는
Fraction
모듈에서 수업하다.fractions
.[6] - Ruby 2.1 이상: 특수 구문을 사용한 네이티브 지원.
- Ruby 사전 2.1: 표준 라이브러리를 통해
Rational
모듈에서 수업하다.rational
. - 스몰토크는 a를 사용하여 합리적인 숫자를 나타낸다.
Fraction
형식을 갖추다p/q
어디에p
그리고q
임의 크기 정수.산술 연산 적용*
,+
,-
,/
, 분수는 감소된 분수를 반환한다.
외부 라이브러리 사용:
- C&C++의 경우 GNU Multiple Precision Mathing Library와 같은 프로젝트가 있다.
- Apache Commons Math 라이브러리는 Java에 합리적인 숫자를 제공한다.
Fraction
계급의
커먼 리스프
Common Lisp은 임의 크기의 합리적인 숫자에 대해 숫자 데이터 유형을 제공한다.비율.[7]
1/3 ⇒ 1/3
합리적인 수의 종류는RATIO
:
(활자의 1/3) ⇒ 비율
두 정수를 나누면 합리적인 숫자를 반환할 수 있으며, 합리적인 숫자의 곱셈은 정수 숫자를 반환할 수 있다.
(/ 6 8) ⇒ 3/4 (* 3/4 16) ⇒ 12
분자와 분모는 이성적 형식에서 표준적 형식을 줄이고 그 형식의 분자나 분모를 각각 계산하는 동음이의 함수를 사용하여 얻을 수 있다.[8]
(분자 12/16) ⇒ 3 (분모 12/16) ⇒ 4
정수가 큰 컴퓨팅은 합리적인 숫자를 많이 반환한다.
(/ (1- (퇴장시키다 2 200)) (1- (퇴장시키다 2 43))) ⇒ 1606938044258990275541962092341162602522202993782792835301375/8796093022207
클로저
(인쇄(+ 1/10 2/10) ⇒ 3/10
줄리아.
줄리아> 1//10 + 2//10 3//10
하스켈
모듈 데이터에서.비율
(1 % 10) + (2 % 10) ⇒ 3 % 10
라켓(PLT Scheme)
> (+ 1/10 2/10) 3/10
라쿠
라쿠가 제공한다Rat
부전체로 타이핑하다
my $v = 0.2; "{$v}은(는) {$v.^name}이고 분자 {$v.numerator} 및 분모 {$v.denominator}이(가) 있음; # 0.2는 Rat이고 분자 1과 분모 5가 있음
0.1 + 0.2 # 0.3이라고 말하다
(0.1 + 0.2 - 0.3.fmt("%17f") # # 0.0000000000000000
say 1 / (0.1 + 0.2 - 0.3) # ⇒ Rational을 Str에 강제할 때 0으로 나누려는 시도
루비
2.1 이상에서 특수 구문 사용:
irb(main):001:0>놓다 1/10r + 2/10r 3/10 => 0
참조
- ^ "Vocabulary/NumericPrecisions - J Wiki".
- ^ http://docs.julialang.org/en/latest/manual/complex-and-rational-numbers/##################
- ^ "The Haskell 98 Library Report: Rational Numbers".
- ^ "Class Rat".
- ^ "Class FatRat".
- ^ "Fractions — Rational numbers — Python 3.10.0 documentation".
- ^ Common Lisp HyperSpec: RATION
- ^ Common Lisp HyperSpec에서 함수 분자, 분모