Lisage meetod valueOf signatuuriga public static Lfraction valueOf (double df) , mis leiab reaalarvu df parima esituse murruna (vähima nimetajaga murd, mille väärtus on võrdne df-ga tüübi double täpsuse piires). Selgituseks: long-tüüpi täisarvude paar võimaldab murru arvväärtust kujutada palju täpsemalt kui double tüüp Javas, seega tuleks leida vähima nimetaja väärtusega murd m et kehtiks df==m.toDouble() täpselt.
Leidke märksõna "ahelmurdude meetod" abil sobiv algoritm. Mõned näited (kehtivad ainult Java long ja double tüüpide korral), mida testida:
0.0 : 0 / 1
0.125 : 1 / 8
-2.5 : -5 / 2
Math.PI: 245850922 / 78256779
Math.E: 325368125 / 119696244
Math.sqrt(2.): 131836323 / 93222358
...
3 / 1
22 / 7
333 / 106
355 / 113
103993 / 33102
104348 / 33215
208341 / 66317
312689 / 99532
833719 / 265381
1146408 / 364913
4272943 / 1360120
5419351 / 1725033
80143857 / 25510582
245850922 / 78256779 (viimane double täpsuse piires)
817696623 / 260280919 (liiga täpne double jaoks, ei lähene enam tegelikule pii väärtusele)
...
3857417000399352 / 1227853966360537 (siin tuleb vastu long tüübi piir)
...
863953457597116035130889241903 / 275005118580004907937397750346 (30 kohta)
...
8195431631580231940940562635905187768512130325492415715606622527271813136706912196160918073516086749 /
2608691565551919183491410149021484643032338522339688457008688433393047242130983195254246874415444855 (100 kohta)