官术网_书友最值得收藏!

  • Scala編程(第5版)
  • (德)馬丁·奧德斯基等
  • 564字
  • 2022-05-06 15:51:43

6.1 Rational類的規格定義

有理數rational number)是可以用分數n/d表示的數,其中nd是整數,但d不能為零。n稱作分子numerator),而d稱作分母denominator)。典型的有理數如:1/2、2/3、112/239、2/1等。與浮點數相比,有理數的優勢是小數可被精確展現,而不會被舍入或取近似值。

我們在本章要設計的類將對有理數的各項行為進行建模,包括允許有理數進行加、減、乘、除運算。要將兩個有理數相加,首先要得到一個公分母,然后將分子相加。例如,要計算1/2 + 2/3,需要將左操作元的分子和分母分別乘以3,將右操作元的分子和分母分別乘以2,得到3/6 + 4/6,再將兩個分子相加,得到7/6。要將兩個有理數相乘,可以簡單地將它們的分子和分母相乘。因此,1/2 * 2/5得到2/10,這個結果可以被更緊湊地表示為“正規化”(normalized)的1/5。有理數的除法是將右操作元的分子和分母對調,然后做乘法。例如,1/2 / 3/5等于1/2 * 5/3,即5/6。

另一個(可能比較細微的)觀察是,數學中有理數沒有可變的狀態。我們可以將一個有理數與另一個有理數相加,但結果是一個新的有理數,原始的有理數并不會“改變”。我們在本章要設計的不可變的Rational類也滿足這個屬性。每一個有理數都可由一個Rational對象來表示。當你把兩個Rational對象相加時,將會創建一個新的Rational對象來持有它們的和。

你會在本章看到,Scala提供給用戶來編寫類庫的一些手段。它們就像是語言原生支持的一樣。讀完本章后,你將可以像下面這樣使用Rational類:

主站蜘蛛池模板: 公安县| 沭阳县| 辽阳市| 辛集市| 宜丰县| 巢湖市| 江城| 老河口市| 玉龙| 林甸县| 大埔县| 湟中县| 闻喜县| 仁怀市| 年辖:市辖区| 荥经县| 玉树县| 石景山区| 进贤县| 安阳市| 玉山县| 武宁县| 开封县| 东平县| 石楼县| 乌兰浩特市| 洞口县| 武山县| 高青县| 东城区| 丹棱县| 明光市| 娱乐| 姚安县| 汝州市| 平顺县| 进贤县| 于田县| 桑植县| 太仆寺旗| 晋州市|