package Ġcom . k ript al . numeric Ċ Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ import Ġjava . math . Round ingMode Ċ import Ġkotlin . math . pow Ċ Ċ class ĠDouble Decimal Number Ġprivate Ġconstructor ( private Ġval Ġvalue : ĠDouble ) Ġ: ĠDecimal Number () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġadd ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Decimal Number ( value Ġ+ Ġother . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubtract ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Decimal Number ( value Ġ- Ġother . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmultiply ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Decimal Number ( value Ġ* Ġother . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġuse Ġvalue Of Ġfor Ġadditional Ġvalidation ĊĠĠĠ Ġoverride Ġfun Ġdivide ( other : ĠDecimal Number , Ġrounding Mode : ĠRound ingMode ): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue Of ( value Ġ/ Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpow ( n : ĠInt ): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Decimal Number ( value . pow ( n )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscale By Power Of Ten ( n : ĠInt ): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Decimal Number ( value Ġ* Ġ( 1 0 . 0 . pow ( n . toDouble ()))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremainder ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Decimal Number ( value Ġ% Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġneg ate (): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Decimal Number (- value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġabs (): ĠDouble Decimal Number Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sign um () Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Decimal Number (- value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsign um (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . compareTo ( 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Byte (): ĠByte Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDouble # to Byte () Ġis Ġdeprecated Ġ- Ġthis Ġis Ġthe Ġrecommended Ġway ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toInt (). to Byte () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Char (): ĠChar Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toInt (). to Char () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Double (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Float (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Int (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Long (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Short (): ĠShort Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDouble # to Short () Ġis Ġdeprecated Ġ- Ġthis Ġis Ġthe Ġrecommended Ġway ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toInt (). to Short () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto BigDecimal (): ĠBigDecimal Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBigDecimal . valueOf ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto BigInteger (): ĠBigInteger Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBigInteger . valueOf ( value . to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠDecimal Number ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġseems Ġa Ġbit Ġfaster Ġthan Ġusing ĠDouble . compare Ġmethod ĊĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġother . toDouble () ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< Ġo ) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ> Ġo ) Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġminimize Ġinstanti ations Ġof ĠDecimal Number Ġwrapper Ġclasses ĊĠĠĠ Ġfun Ġmax ( other : ĠDouble Decimal Number ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ>= Ġother ) Ġthis Ġelse Ġother ĊĠĠĠ Ġoverride Ġfun Ġmax ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ>= Ġother ) Ġthis Ġelse Ġvalue Of ( other . toDouble ()) ĊĠĠĠ Ġoverride Ġfun Ġmax ( other : ĠInt ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ>= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmax ( other : ĠLong ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ>= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmax ( other : ĠString ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ>= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmax ( other : ĠDouble ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ>= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmax ( other : ĠBigDecimal ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ>= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmax ( other : ĠBigInteger ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ>= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĊĠĠĠ Ġ// Ġminimize Ġinstanti ations Ġof ĠDecimal Number Ġwrapper Ġclasses ĊĠĠĠ Ġfun Ġmin ( other : ĠDouble Decimal Number ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ<= Ġother ) Ġthis Ġelse Ġother ĊĠĠĠ Ġoverride Ġfun Ġmin ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ<= Ġother ) Ġthis Ġelse Ġvalue Of ( other . toDouble ()) ĊĠĠĠ Ġoverride Ġfun Ġmin ( other : ĠInt ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ<= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmin ( other : ĠLong ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ<= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmin ( other : ĠString ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ<= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmin ( other : ĠDouble ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ<= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmin ( other : ĠBigDecimal ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ<= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĠĠĠ Ġoverride Ġfun Ġmin ( other : ĠBigInteger ): ĠDouble Decimal Number Ġ= Ġif Ġ( this Ġ<= Ġother ) Ġthis Ġelse Ġvalue Of ( other ) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġcompare To ( other : ĠInt ): ĠInt Ġ= Ġvalue . compareTo ( other ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġcompare To ( other : ĠLong ): ĠInt Ġ= Ġvalue . compareTo ( other ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġcompare To ( other : ĠString ): ĠInt Ġ= Ġvalue . compareTo ( get Validated Finite Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġcompare To ( other : ĠDouble ): ĠInt Ġ= Ġvalue . compareTo ( get Validated Finite Number ( other )) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġcompare To ( other : ĠBigDecimal ): ĠInt Ġ= Ġvalue . compareTo ( other . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġcompare To ( other : ĠBigInteger ): ĠInt Ġ= Ġvalue . compareTo ( other . toDouble ()) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ+ Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠInt ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ+ Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠLong ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ+ Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠString ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ+ Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠDouble ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ+ Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠBigDecimal ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ+ Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠBigInteger ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ+ Ġother . toDouble ()) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ- Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠInt ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ- Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠLong ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ- Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠString ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ- Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠDouble ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ- Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠBigDecimal ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ- Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠBigInteger ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ- Ġother . toDouble ()) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ* Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠInt ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ* Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠLong ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ* Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠString ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ* Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠDouble ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ* Ġother ) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠBigDecimal ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ* Ġother . toDouble ()) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠBigInteger ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ* Ġother . toDouble ()) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ/ Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠInt ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ/ Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠLong ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ/ Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠString ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ/ Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠDouble ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ/ Ġget Validated Non Zero Number ( other )) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠBigDecimal ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ/ Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠBigInteger ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ/ Ġget Validated Non Zero Number ( other . toDouble ())) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġrem ( other : ĠDecimal Number ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ% Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġrem ( other : ĠInt ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ% Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġrem ( other : ĠLong ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ% Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġrem ( other : ĠString ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ% Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġrem ( other : ĠDouble ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ% Ġget Validated Non Zero Number ( other )) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġrem ( other : ĠBigDecimal ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ% Ġget Validated Non Zero Number ( other . toDouble ())) ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġrem ( other : ĠBigInteger ): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ% Ġget Validated Non Zero Number ( other . toDouble ())) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġunary Minus (): ĠDouble Decimal Number Ġ= Ġthis . neg ate () ĊĠĠĠ Ġoverride Ġfun Ġinc (): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ+ Ġ 1 . 0 ) ĊĠĠĠ Ġoverride Ġfun Ġdec (): ĠDouble Decimal Number Ġ= Ġvalue Of ( value Ġ- Ġ 1 . 0 ) ĊĊĠĠĠ Ġ// ĠUses Ġstatic Ġmethod Ġshadow ing Ġso Ġcalling ĠDouble Decimal Number . valueOf Ġcalls Ġthese Ġmethods Ġ- Ġeven Ġthough Ġits Ġsuperclass ĊĠĠĠ Ġ// Ġhas Ġthe Ġsame Ġstatic Ġmethods . ĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠDecimal Number Factory < Double Decimal Number > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcommonly Ġused Ġconstants ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠZERO : ĠDouble Decimal Number Ġ= Ġvalue Of ( 0 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠONE : ĠDouble Decimal Number Ġ= Ġvalue Of ( 1 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠTWO : ĠDouble Decimal Number Ġ= Ġvalue Of ( 2 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠTHREE : ĠDouble Decimal Number Ġ= Ġvalue Of ( 3 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠFO UR : ĠDouble Decimal Number Ġ= Ġvalue Of ( 4 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠF IVE : ĠDouble Decimal Number Ġ= Ġvalue Of ( 5 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠS IX : ĠDouble Decimal Number Ġ= Ġvalue Of ( 6 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠSE VEN : ĠDouble Decimal Number Ġ= Ġvalue Of ( 7 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠE IGHT : ĠDouble Decimal Number Ġ= Ġvalue Of ( 8 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠN INE : ĠDouble Decimal Number Ġ= Ġvalue Of ( 9 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠT EN : ĠDouble Decimal Number Ġ= Ġvalue Of ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠH UND RED : ĠDouble Decimal Number Ġ= Ġvalue Of ( 1 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue Of ( value : ĠBigDecimal ): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number ( value . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue Of ( value : ĠBigInteger ): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number ( value . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue Of ( value : ĠLong ): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number ( value . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue Of ( value : ĠInt ): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number ( value . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue Of ( value : ĠDouble ): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number ( get Validated Finite Number ( value )) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue Of ( value : ĠString ): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number ( get Validated Finite Number ( value . toDouble ())) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠValid ates Ġthat Ġprovided Ġnumber Ġis Ġnot Ġone Ġof : Ġ[ Double . NaN ], Ġ[ Double . POSITIVE _ INFINITY ], Ġ[ Double . NEGATIVE _ INFINITY ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠNOTE : ĠValidation Ġneeds Ġto Ġbe Ġpresent Ġonly Ġwhen Ġwrapping Ġ[ String ] Ġor Ġ[ Double ] Ġ( or Ġ[ Float ] Ġif Ġwe Ġdecide Ġto Ġsupport Ġit ). ĊĠĠĠĠĠĠĠĠ Ġ* ĠNo Ġother Ġtype Ġcan Ġhave Ġnon - finite Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġprovided Ġnumber Ġ- Ġif Ġvalidation Ġsucceeds . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġinline Ġfun Ġget Validated Finite Number ( number : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! number . is Finite ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠArithmetic Exception (" Non - finite Ġnumbers Ġare Ġnot Ġsupported : Ġ$ number ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnumber ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠValid ates Ġthat Ġprovided Ġnumber Ġis Ġnot Ġ 0 . 0 Ġ( ZERO ). ĠNe cessary Ġwhen Ġusing Ġdivide Ġand Ġremainder Ġfunctions . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠNOTE : ĠIn Ġtheory , Ġthis Ġcould Ġbe Ġomitted Ġbecause Ġdivision / remainder Ġby ĠZERO Ġproduces Ġ[ Double . NaN ], Ġwhich ĊĠĠĠĠĠĠĠĠ Ġ* Ġwould Ġget Ġvalidated Ġby Ġ[ get Validated Finite Number ]. ĠWe 're Ġkeeping Ġthis Ġto Ġget Ġa Ġclear Ġmessage Ġthat Ġone Ġtries Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġdivide Ġby ĠZERO . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġprovided Ġnumber Ġ- Ġif Ġvalidation Ġsucceeds . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġinline Ġfun Ġget Validated Non Zero Number ( number : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( number Ġ== Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠArithmetic Exception (" Cannot Ġdivide Ġby Ġ 0 .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnumber ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠBigDecimal . toDouble Decimal Number (): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number . valueOf ( this ) Ċ fun ĠBigInteger . toDouble Decimal Number (): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number . valueOf ( this ) Ċ fun ĠLong . toDouble Decimal Number (): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number . valueOf ( this ) Ċ fun ĠInt . toDouble Decimal Number (): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number . valueOf ( this ) Ċ fun ĠString . toDouble Decimal Number (): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number . valueOf ( this ) Ċ fun ĠDouble . toDouble Decimal Number (): ĠDouble Decimal Number Ġ= ĠDouble Decimal Number . valueOf ( this ) Ċ