package Ġcom . av ito . math Ċ Ċ import Ġjava . text . Decimal Format Ċ Ċ @ Suppress (" Magic Number ") Ċ public Ġfun ĠInt . percent Of ( sum : ĠInt ): ĠPercent Ġ= ĠNumber Percent ( toFloat () Ġ/ Ġsum Ġ* Ġ 1 0 0 ) Ċ Ċ @ Suppress (" Magic Number ") Ċ public Ġfun ĠLong . percent Of ( sum : ĠLong ): ĠPercent Ġ= ĠNumber Percent ( toFloat () Ġ/ Ġsum Ġ* Ġ 1 0 0 ) Ċ Ċ /** Ċ Ġ* Ġconvert Ġ 0 . 0 Ġ- Ġ 1 . 0 Ġrepresentation Ġto Ġ[ Percent ] Ċ Ġ*/ Ċ @ Suppress (" Magic Number ") Ċ public Ġfun ĠDouble . percent (): ĠPercent Ġ{ ĊĠĠĠ Ġrequire ( this Ġin Ġ 0 . 0 .. 1 . 0 ) Ġ{ Ġ" Trying Ġto Ġconvert Ġ$ this Ġto Ġpercent s ; Ġshould Ġbe Ġin Ġ[ 0 . 0 .. 1 . 0 ] Ġrange " Ġ} ĊĠĠĠ Ġreturn ĠNumber Percent ( this Ġ* Ġ 1 0 0 ) Ċ } Ċ Ċ /** Ċ Ġ* Ġconvert Ġ 0 . 0 Ġ- Ġ 1 . 0 Ġrepresentation Ġto Ġ[ Percent ] Ċ Ġ*/ Ċ @ Suppress (" Magic Number ") Ċ public Ġfun ĠFloat . percent (): ĠPercent Ġ{ ĊĠĠĠ Ġrequire ( this Ġin Ġ 0 . 0 .. 1 . 0 ) Ġ{ Ġ" Trying Ġto Ġconvert Ġ$ this Ġto Ġpercent s ; Ġshould Ġbe Ġin Ġ[ 0 . 0 .. 1 . 0 ] Ġrange " Ġ} ĊĠĠĠ Ġreturn ĠNumber Percent ( this Ġ* Ġ 1 0 0 ) Ċ } Ċ Ċ public Ġinterface ĠPercent Ġ{ ĊĊĠĠĠ Ġpublic Ġfun Ġtwo Digits String (): ĠString ĊĊĠĠĠ Ġpublic Ġfun Ġto Int (): ĠInt ĊĊĠĠĠ Ġpublic Ġfun Ġto Long (): ĠLong Ċ } Ċ Ċ internal Ġclass ĠNumber Percent ( val Ġvalue : ĠNumber ) Ġ: ĠPercent Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdecimal Format Ġ= ĠDecimal Format (" 0 . ## '% '") ĊĊĠĠĠ Ġoverride Ġfun Ġtwo Digits String (): ĠString Ġ= Ġdecimal Format . format ( value ) ĊĊĠĠĠ Ġoverride Ġfun Ġto Int (): ĠInt Ġ= Ġvalue . toInt () ĊĊĠĠĠ Ġoverride Ġfun Ġto Long (): ĠLong Ġ= Ġvalue . to Long () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġtwo Digits String () Ċ } Ċ