Michael Knudsen <micknudsen@gmail.com> writes:
> Jeg har et datasæt, som indeholder tal helt ned fra 1E-180 og op til
> 0.
Du mener vel "ned til 0"? Selvom de andre tal er små, så er de stadig
større end nul.
> Findes der en snedig måde at håndtere disse tal på i Java? Mit
> problem er, at jeg gerne vil transformere dem med logaritmen (det vil
> sige Math.log), men det går jo galt, når de engang imellem er 0.
Kan du så ikke lave et specialtilfælde for nul?
Hvilken egenskab ved logaritmen af tallet er det du er interesseret i?
Altså: Hvorfor vil du bruge logaritmen?
> Derfor tænkte jeg på først at forskyde tallene og beregne log(x+1) for
> hvert x i mit datasæt.
Og vil den egenskab blive bevaret ved at lægge en til?
> Desværre bliver de meget små x'er kvalt, når
> jeg lægger 1 til, også selv om jeg f.eks. prøver
>
> Math.log((float)x + (float)1)
Brug altid double. Der er ikke noget sparet ved at bruge float, ud
over lidt hukommelse hvis tallet gemmes.
/L
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'