@ file : Suppress (" UNUSED _ PARAMETER ") Ċ Ċ package Ġlesson 1 1 . task 1 Ċ Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġjava . lang . Integer .* Ċ import Ġjava . lang . Strict Math . abs Ċ import Ġjava . lang . Strict Math . pow Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* ĠÐļ Ð»Ð°ÑģÑģ Ġ" Ð² Ðµ Ñī ÐµÑģÑĤÐ² ÐµÐ½ Ð½Ð¾Ðµ ĠÑĩ Ð¸Ñģ Ð»Ð¾ ĠÑģ ĠÑĦ Ð¸Ðº Ñģ Ð¸ÑĢÐ¾Ð² Ð°Ð½ Ð½Ð¾Ð¹ ĠÑĤ Ð¾Ñĩ Ðº Ð¾Ð¹ " Ċ Ġ* Ċ Ġ* ĠÐŀ Ð± Ñī Ð°Ñı ĠÑģÐ» Ð¾Ð¶ Ð½Ð¾ÑģÑĤÑĮ ĠÐ·Ð°Ð´ Ð°Ð½Ð¸Ñı Ġ- ĠÑģÐ» Ð¾Ð¶ Ð½Ð°Ñı , ĠÐ¾Ð± Ñī Ð°Ñı ĠÑĨ ÐµÐ½ Ð½Ð¾ÑģÑĤÑĮ ĠÐ² ĠÐ± Ð°Ð» Ð»Ð° Ñħ Ġ-- Ġ 2 0 . Ċ Ġ* ĠÐŀ Ð± ÑĬ ÐµÐºÑĤ ĠÐºÐ»Ð°ÑģÑģ Ð° Ġ- ĠÐ² Ðµ Ñī ÐµÑģÑĤÐ² ÐµÐ½ Ð½Ð¾Ðµ ĠÑĩ Ð¸Ñģ Ð»Ð¾ ĠÑģ ĠÐ·Ð°Ð´ Ð°Ð½ Ð½ÑĭÐ¼ ĠÑĩ Ð¸Ñģ Ð» Ð¾Ð¼ ĠÐ´ Ðµ ÑģÑı ÑĤÐ¸ Ñĩ Ð½ÑĭÑħ ĠÑĨ Ð¸ÑĦ ÑĢ ĠÐ¿Ð¾ÑģÐ» Ðµ ĠÐ·Ð°Ð¿ ÑıÑĤ Ð¾Ð¹ Ġ( precision , ĠÑĤ Ð¾Ñĩ Ð½Ð¾ÑģÑĤÑĮ ). Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ , ĠÐ´Ð»Ñı ĠÐ¾ Ð³ÑĢ Ð°Ð½Ð¸ Ñĩ ÐµÐ½Ð¸Ñı ĠÐ² ĠÑĤ ÑĢÐ¸ ĠÐ· Ð½ Ð°Ðº Ð° ĠÑįÑĤÐ¾ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±ÑĭÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ 1 . 2 3 4 ĠÐ¸Ð»Ð¸ Ġ- 9 8 7 6 5 4 . 3 2 1 . Ċ Ġ* ĠÐ § Ð¸Ñģ Ð»Ð° ĠÐ¼Ð¾Ð¶Ð½Ð¾ ĠÑģÐº Ð» Ð°Ð´ ÑĭÐ² Ð°ÑĤÑĮ , ĠÐ²Ñĭ Ñĩ Ð¸ÑĤ Ð°ÑĤÑĮ , ĠÑĥ Ð¼ Ð½ Ð¾Ð¶ Ð°ÑĤÑĮ , ĠÐ´ ÐµÐ» Ð¸ÑĤÑĮ Ċ Ġ* Ġ( Ð¿ ÑĢÐ¸ ĠÑįÑĤ Ð¾Ð¼ ĠÑĤ Ð¾Ñĩ Ð½Ð¾ÑģÑĤÑĮ ĠÑĢ ÐµÐ· ÑĥÐ»ÑĮ ÑĤ Ð°ÑĤÐ° ĠÐ²ÑĭÐ± Ð¸ ÑĢÐ° ÐµÑĤÑģÑı ĠÐºÐ°Ðº ĠÐ½Ð° Ð¸Ð± Ð¾Ð»ÑĮ ÑĪ Ð°Ñı ĠÑĤ Ð¾Ñĩ Ð½Ð¾ÑģÑĤÑĮ ĠÐ° ÑĢ Ð³ ÑĥÐ¼ÐµÐ½ÑĤ Ð¾Ð² ), Ċ Ġ* ĠÐ° ĠÑĤÐ°Ðº Ð¶Ðµ ĠÑģ ÑĢÐ°Ð² Ð½ Ð¸ÑĤÑĮ ĠÐ½Ð° ĠÑĢÐ°Ð ² ÐµÐ½ ÑģÑĤÐ² Ð¾ ĠÐ¸ ĠÐ± Ð¾Ð»ÑĮ ÑĪÐµ / Ð¼ÐµÐ½ ÑĮ ÑĪÐµ , ĠÐ¿ÑĢ Ðµ Ð¾Ð± ÑĢÐ°Ð· Ð¾Ð² ÑĭÐ² Ð°ÑĤÑĮ ĠÐ² ĠÑģÑĤÑĢÐ¾Ðº Ñĥ ĠÐ¸ ĠÑĤÐ¸Ð¿ ĠDouble . Ċ Ġ* Ċ Ġ* ĠÐĴ Ñĭ ĠÐ¼Ð¾Ð¶ÐµÑĤ Ðµ ĠÑģ Ð°Ð¼Ð¸ ĠÐ²ÑĭÐ± ÑĢ Ð°ÑĤÑĮ , ĠÐºÐ°Ðº ĠÑħ ÑĢÐ°Ð½ Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ ĠÐ² ĠÐ¿ Ð°Ð¼ Ñı ÑĤÐ¸ Ċ Ġ* Ġ( Ð² ĠÐ²Ð¸Ð´ Ðµ ĠÑģÑĤÑĢÐ¾Ðº Ð¸ , ĠÑĨ ÐµÐ» Ð¾Ð³Ð¾ ĠÑĩ Ð¸Ñģ Ð»Ð° , ĠÐ´Ð² Ñĥ Ñħ ĠÑĨ ÐµÐ» ÑĭÑħ ĠÑĩ Ð¸Ñģ ÐµÐ» ĠÐ¸ ĠÑĤ . Ð´ .). Ċ Ġ* ĠÐŁ ÑĢÐµÐ´ ÑģÑĤÐ°Ð² Ð»ÐµÐ½Ð¸Ðµ ĠÑĩ Ð¸Ñģ Ð»Ð° ĠÐ´Ð¾Ð»Ð¶ Ð½Ð¾ ĠÐ¿Ð¾Ð· Ð²Ð¾Ð» Ñı ÑĤÑĮ ĠÑħ ÑĢÐ°Ð½ Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð° ĠÑģ ĠÐ¾Ð± Ñī Ð¸Ð¼ ĠÑĩ Ð¸Ñģ Ð» Ð¾Ð¼ ĠÐ´ Ðµ ÑģÑı ÑĤÐ¸ Ñĩ Ð½ÑĭÑħ ĠÑĨ Ð¸ÑĦ ÑĢ ĠÐ½Ðµ ĠÐ¼ÐµÐ½ ÐµÐµ Ġ 9 . Ċ Ġ*/ Ċ class ĠFixed Point Number ( private Ġval Ġinteger : ĠInt , Ġval Ġprecision : ĠInt ) Ġ: ĊĠĠĠ ĠComparable < Fixed Point Number > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfrac 1 0 Ġ= Ġpow 1 0 ( precision ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¢ Ð¾Ñĩ Ð½Ð¾ÑģÑĤÑĮ Ġ- ĠÑĩ Ð¸Ñģ Ð»Ð¾ ĠÐ´ Ðµ ÑģÑı ÑĤÐ¸ Ñĩ Ð½ÑĭÑħ ĠÑĨ Ð¸ÑĦ ÑĢ ĠÐ¿Ð¾ÑģÐ» Ðµ ĠÐ·Ð°Ð¿ ÑıÑĤ Ð¾Ð¹ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// val Ġprecision Ġ= Ġfraction al ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĴ ÑģÐ¿ Ð¾Ð¼ Ð¾Ð³ Ð°ÑĤÐµÐ»ÑĮ Ð½Ð°Ñı ĠÑģÑĤ Ð°ÑĤ Ð¸ÑĩÐµÑģ ÐºÐ° Ñı ĠÑĦÑĥÐ½Ðº ÑĨÐ¸Ñı ĠÐ²Ñĭ Ð· ÑĭÐ² Ð°ÐµÐ¼ Ð°Ñı ĠÐ¸Ð· ĠÐºÐ¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ Ð° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġpow 1 0 ( p : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( p Ġ! in Ġ 0 .. 9 ) Ġthrow ĠIllegalArgumentException (" Overflow ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġk Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. p ) Ġk Ġ*= Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġk ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Prec ( new Prec : Int ): Long { ĊĠĠĠĠĠĠĠ Ġif Ġ( new Prec Ġ== Ġprecision ) Ġreturn Ġinteger . to Long () ĊĠĠĠĠĠĠĠ Ġif ( new Prec > 9 Ġ|| Ġnew Prec < 0 ) Ġthrow ĠIllegalArgumentException (" Overflow ") ĊĠĠĠĠĠĠĠ Ġif Ġ( new Prec Ġ< Ġprecision ) Ġreturn Ġ( integer Ġ/ Ġpow 1 0 ( precision - new Prec )). to Long () ĊĠĠĠĠĠĠĠ Ġval Ġnew Int Ġ= Ġinteger . to Long ()* pow 1 0 ( new Prec - precision ) ĊĠĠĠĠĠĠĠ Ġif Ġ( abs ( new Int )> Ġ 1 _ 0 0 0 _ 0 0 0 _ 0 0 0 ) Ġthrow ĠIllegalArgumentException (" Overflow ") ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Int ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐļ Ð¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ ĠÐ¸Ð· ĠÑģÑĤÑĢÐ¾Ðº Ð¸ , ĠÑĤ Ð¾Ñĩ Ð½Ð¾ÑģÑĤÑĮ ĠÐ²ÑĭÐ± Ð¸ ÑĢÐ° ÐµÑĤÑģÑı ĠÐ² ĠÑģÐ¾ Ð¾ÑĤ Ð²ÐµÑĤ ÑģÑĤÐ² Ð¸Ð¸ ĊĠĠĠĠ Ġ* ĠÑģ ĠÑĩ Ð¸Ñģ Ð» Ð¾Ð¼ ĠÑĨ Ð¸ÑĦ ÑĢ ĠÐ¿Ð¾ÑģÐ» Ðµ ĠÐ´ Ðµ ÑģÑı ÑĤÐ¸ Ñĩ Ð½Ð¾Ð¹ ĠÑĤ Ð¾Ñĩ ÐºÐ¸ . ĊĠĠĠĠ Ġ* ĠÐķÑģÐ»Ð¸ ĠÑģÑĤÑĢÐ¾Ðº Ð° ĠÐ½ ÐµÐº Ð¾ÑĢ ÑĢ ÐµÐºÑĤ Ð½Ð° ĠÐ¸Ð»Ð¸ ĠÑĨ Ð¸ÑĦ ÑĢ ĠÑģ Ð»Ð¸ ÑĪ Ðº Ð¾Ð¼ ĠÐ¼ Ð½Ð¾Ð³Ð¾ , ĊĠĠĠĠ Ġ* ĠÐ± ÑĢÐ¾Ñģ Ð¸ÑĤÑĮ ĠNumber FormatException . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠÐĴ Ð½ Ð¸Ð¼ Ð°Ð½Ð¸Ðµ : ĠÑįÑĤ Ð¾ÑĤ ĠÐ¸Ð»Ð¸ ĠÐ´ÑĢÑĥÐ³ Ð¾Ð¹ ĠÐºÐ¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ ĠÐ¼Ð¾Ð¶Ð½Ð¾ ĠÑģ Ð´ÐµÐ» Ð°ÑĤÑĮ ĠÐ¾Ñģ Ð½Ð¾Ð² Ð½ÑĭÐ¼ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( s : ĠString ) Ġ: Ġthis ( s . toDouble (), Ġif Ġ( '. ' Ġin Ġs ) Ġs . length Ġ- Ġs . indexOf ('.') Ġ- Ġ 1 Ġelse Ġ 0 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐļ Ð¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ ĠÐ¸Ð· ĠÐ² Ðµ Ñī ÐµÑģÑĤÐ² ÐµÐ½ Ð½Ð¾Ð³Ð¾ ĠÑĩ Ð¸Ñģ Ð»Ð° ĠÑģ ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð¹ ĠÑĤ Ð¾Ñĩ Ð½Ð¾ÑģÑĤ ÑĮÑİ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( d : ĠDouble , Ġp : ĠInt ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġwith (( d Ġ* Ġpow 1 0 ( p ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( this ) Ġ> Ġ( MAX _ VALUE - 1 )) Ġthrow ĠIllegalArgumentException (" Very Ġbig ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġthis . round ToInt () ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġp ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġconstructor ( d : ĠLong , Ġp : ĠInt ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( d ) Ġ> Ġ 1 _ 0 0 0 _ 0 0 0 _ 0 0 0 ) Ġthrow ĠIllegalArgumentException (" Very Ġbig ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġd . toInt (), ĊĠĠĠĠĠĠĠ Ġp ĊĠĠĠ Ġ) ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐļ Ð¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ ĠÐ¸Ð· ĠÑĨ ÐµÐ» Ð¾Ð³Ð¾ ĠÑĩ Ð¸Ñģ Ð»Ð° Ġ( Ð¿ ÑĢÐµÐ´ Ð¿ Ð¾Ð» Ð°Ð³ Ð°ÐµÑĤ ĠÐ½ Ñĥ Ð» ÐµÐ² ÑĥÑİ ĠÑĤ Ð¾Ñĩ Ð½Ð¾ÑģÑĤÑĮ ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( i : ĠInt ) Ġ: Ġthis ( i , Ġ 0 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ ÐµÐ½Ð¸Ðµ . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠÐĹ Ð´ ÐµÑģ ÑĮ ĠÐ¸ ĠÐ² ĠÐ´ÑĢÑĥÐ³ Ð¸Ñħ ĠÐ± Ð¸ Ð½Ð° ÑĢ Ð½ÑĭÑħ ĠÐ¾Ð¿ ÐµÑĢ Ð°ÑĨÐ¸Ñı Ñħ ĊĠĠĠĠ Ġ* ĠÑĤ Ð¾Ñĩ Ð½Ð¾ÑģÑĤÑĮ ĠÑĢ ÐµÐ· ÑĥÐ»ÑĮ ÑĤ Ð°ÑĤÐ° ĠÐ²ÑĭÐ± Ð¸ ÑĢÐ° ÐµÑĤÑģÑı ĠÐºÐ°Ðº ĠÐ½Ð° Ð¸Ð± Ð¾Ð»ÑĮ ÑĪ Ð°Ñı ĠÑĤ Ð¾Ñĩ Ð½Ð¾ÑģÑĤÑĮ ĠÐ° ÑĢ Ð³ ÑĥÐ¼ÐµÐ½ÑĤ Ð¾Ð² . ĊĠĠĠĠ Ġ* ĠÐ Ľ Ð¸ ÑĪ Ð½Ð¸ Ðµ ĠÐ· Ð½ Ð°Ðº Ð¸ ĠÐ¾ÑĤ Ð± ÑĢ Ð°Ñģ ÑĭÐ² Ð° ÑİÑĤÑģÑı , ĠÑĩ Ð¸Ñģ Ð»Ð¾ ĠÐ¾ Ðº ÑĢÑĥÐ³ Ð»Ñı ÐµÑĤÑģÑı ĠÐ¿Ð¾ ĠÐ¿ÑĢÐ°Ð² Ð¸Ð» Ð°Ð¼ ĠÐ° ÑĢÐ¸ ÑĦ Ð¼ ÐµÑĤ Ð¸ ÐºÐ¸ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġplus ( other : ĠFixed Point Number ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( max ( precision , Ġother . precision )){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFixed Point Number ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Prec ( this ) Ġ+ Ġother . to Prec ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ Ð¼ÐµÐ½ Ð° ĠÐ· Ð½ Ð°Ðº Ð° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġunary Minus () Ġ= ĠFixed Point Number (- integer , Ġprecision ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĴ Ñĭ Ñĩ Ð¸ÑĤ Ð°Ð½Ð¸Ðµ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġminus ( other : ĠFixed Point Number ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( max ( precision , Ġother . precision )){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFixed Point Number ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Prec ( this ) Ġ- Ġother . to Prec ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ£ Ð¼ Ð½ Ð¾Ð¶ ÐµÐ½Ð¸Ðµ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġtimes ( other : ĠFixed Point Number ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( pow 1 0 ( min ( precision , Ġother . precision )) ){ ĊĠĠĠĠĠĠĠ ĠFixed Point Number ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( integer . to Long () Ġ* Ġother . integer . to Long () Ġ+ Ġthis Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ this , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax ( precision , Ġother . precision ) ĊĠĠĠĠĠĠĠ Ġ)} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĶ ÐµÐ» ÐµÐ½Ð¸Ðµ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġdiv ( other : ĠFixed Point Number ): ĠFixed Point Number Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( integer Ġ== Ġ 0 ) Ġthrow ĠIllegalArgumentException (" Ġdiv Ġby Ġ 0 ") ĊĠĠĠĠĠĠĠ Ġreturn Ġwith ( max ( precision , Ġother . precision )){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFixed Point Number ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Prec ( this Ġ+ Ġother . precision ) Ġ/ Ġother . integer . to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ ÑĢÐ°Ð² Ð½ ÐµÐ½Ð¸Ðµ ĠÐ½Ð° ĠÑĢÐ°Ð ² ÐµÐ½ ÑģÑĤÐ² Ð¾ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ=== Ġother Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġis ĠFixed Point Number Ġ-> Ġcompare To ( other ) Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ ÑĢÐ°Ð² Ð½ ÐµÐ½Ð¸Ðµ ĠÐ½Ð° ĠÐ± Ð¾Ð»ÑĮ ÑĪÐµ / Ð¼ÐµÐ½ ÑĮ ÑĪÐµ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠFixed Point Number ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġthis Ġ- Ġother ĊĠĠĠĠĠĠĠ Ġreturn Ġdiff . integer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢ Ðµ Ð¾Ð± ÑĢÐ°Ð· Ð¾Ð² Ð°Ð½Ð¸Ðµ ĠÐ² ĠÑģÑĤÑĢÐ¾Ðº Ñĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ"${ integer Ġ/ Ġfrac 1 0 }" Ġ+ Ġif Ġ( precision Ġ== Ġ 0 ) Ġ"" Ġelse ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ". % 0 ${ precision } d ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabs ( integer ) Ġ% Ġfrac 1 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢ Ðµ Ð¾Ð± ÑĢÐ°Ð· Ð¾Ð² Ð°Ð½Ð¸Ðµ ĠÐº ĠÐ² Ðµ Ñī ÐµÑģÑĤÐ² ÐµÐ½ Ð½Ð¾Ð¼ Ñĥ ĠÑĩ Ð¸Ñģ Ð» Ñĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Double (): ĠDouble Ġ= Ġinteger . toDouble () Ġ/ Ġfrac 1 0 . toDouble () ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġinteger . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġprecision . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ