Maldiskusjon:Sorterbart tall

Sideinnholdet støttes ikke på andre språk.
Fra Wikipedia, den frie encyklopedi

Underlig sortering (mine endringer 2008-03-12T14:13:21)[rediger kilde]

Endringene mine «skulle fungert», men det ble noe tull med enten javascript eller kode. Om man trykket på sorteringsknappen i en kolonne mer enn 2 ganger, begynte den plutselig på et underlig sorteringsmønsker. — Kagee 12. mar 2008 kl. 14:25 (CET)

Enig, det burde fungert. Men det ser ut til å være noe rart selv ved sortering uten bruk av noen mal. Her er det noe muffens et sted. --Mollerup 12. mar 2008 kl. 15:05 (CET)
Den taklet ikke desimaltall, fordi javascriptet tolket det som tusenskilletegn. Men se på Bruker:Kagee/Bøtte og spade 2 - kolonne 1 som bruker min metode sorterer 58 feil, og etter 2 klikk går den helt på trynet. Kanskje vi kan skrive en lokal versjon av javascriptet? — Kagee 12. mar 2008 kl. 15:19 (CET)
Jeg har tittet litt på javascriptet, og det burde gå ann å gjøre det mer norgeskompatibelt. F.eks fjerner funksjonen som sammenligner tall ,(komma) fra tallet - antagelig for å fjerne engelske/amerikanske tusentallsskilletegn. Derfor fungerer ikke desimaltall skikkelig. — Kagee 12. mar 2008 kl. 16:10 (CET)
Jeg har ikke noe greie på javascript, dessverre. Lykke til :-) Mollerup 13. mar 2008 kl. 08:22 (CET)

Takler ikke tall over 9 999 999 (kun millioner, ikke 10 millioner ++)[rediger kilde]

Jeg må inrømme at jeg ikke forstår 100% hvordan denne malen fungerer, (jeg prøvde å forenkle den, men det fungerte ikke), men jeg ser nå på USAs delstater at den ikke takler tall over 9 999 999? 10 millioner sorteres før 2 millioner, og 20 før 30. Jeg syntes også rendringen av malen har endret seg - baserte ikke denne seg på en skjult span-tag med en masse && i? Jeg kan ikke se noen slike på USAs delstater. — Kagee 13. mar 2008 kl. 09:03 (CET)

Tror det skulle være fikset nå. --Mollerup 13. mar 2008 kl. 09:43 (CET)

Utvidelse[rediger kilde]

Jeg foreslår at vi legger inn kode som gir mulighet for

  1. Å gjøre om tallet til en lenke (1985 -> 1985) for tilfeller der f.eks årstall må bruke denne malen.
    (navngitt parameter «lenke», verdi ja=lag lenke / annet=ikke lag lenke)
  2. Å gi mulighet for å plassere tekst mellom tallet og den skjulte span-taggen.
    (navngitt paramter «foran», verdi f.eks. «ca.»)

Eksempelkode

|{{padright:{{#ifexpr:{{{1}}}<1000|+{{{1}}}|
{{formatnum:{{{1}}}}}}}|1 |*}} = &&&&&&&&&&&&&&&}}</span>{{#ifexpr:{{{1}}}<1000|
{{{foran|}}}<span style="{{{2|display:none}}}">+</span>{{#if:{{lc:{{{lenke}}}}}=ja|[[}} {{{1}}}{{#if:{{lc:{{{lenke}}}}}=ja|]]}}|
{{{foran|}}}{{#if:{{lc:{{{lenke}}}}}=ja|[[}}{{formatnum:{{{1}}}}}}}{{#if:{{lc:{{{lenke}}}}}=ja|]]}}</includeonly>

Jeg er usikker på om dette fungerer / påvirker koden /påvirker sorteringen. — Kagee 13. mar 2008 kl. 19:24 (CET)

{{sorterbar|1985}} gir 1 985, som ikke er måten å skrive årstall på. Jeg ville heller foreslå en ny mal for sorterbare årstall.
For årstall etter 999 trenger vi vanligvis ikke slikt. For årstall før 1 begynner det å bli slitsomt. {{sorterår|fkr=40}}? — the Sidhekin 13. mar 2008 kl. 19:44 (CET)
Jeg tror også det er lurt med en egen mal for sorterbare årstall, med eller uten lenking. Ellers synes jeg forslaget om å støtte plassering av egen tekst mellom den skjulte koden og tallet er bra. --Mollerup 14. mar 2008 kl. 11:05 (CET)
3. Eller, vi kan lage vårt egen sorteringsscript. (bytte ut javascriptet)Kagee 14. mar 2008 kl. 11:28 (CET)

Negative tall[rediger kilde]

Dokumentasjonen sier ikke noe om at malen ikke støtter negative tall. Bug, doc-mangel eller «arbeid pågår»?

Tall med mal Skjult tekst!
10 023 456 3&507&10023456& 10 023 456
−1 003 456 1&494&899654.4& −1 003 456
−456 1&498&544000& −456
56 3&501&56& 56

Legg spesielt merke til mangel på mellomrom i −1 003 456; -1003456 er nemlig mindre enn 1000. :) — the Sidhekin 13. mar 2008 kl. 20:05 (CET)

"doc-mangel". Malen fungerer kun for positive heltall, dessverre. --Mollerup 14. mar 2008 kl. 09:06 (CET)

En kjapp utvidelse som støtter negative heltall, positive flyttall og mange negative flyttall.

Tall med mal Kommentar Skjult tekst!
5.0000000010023
5.10023456
10023461
1.0023456E+15
10023456&
10 023 456
5.0000000010023
5.10023456
10023461
1.0023456E+15
10023456&
10 023 456
5.0000000010023
5.10023456
10023460.999998
1.0023455999998E+15
10023455.9999982&
10 023 455,9999982
5.0000000010023
5.10023456
10023460.999998
1.0023455999998E+15
10023455.9999982&
10 023 455,9999982
5.0000000010023
5.10023456
10023461
1.0023456E+15
10023456.0000000000001&
10 023 456,0000000000000
5.0000000010023
5.10023456
10023461
1.0023456E+15
10023456.0000000000001&
10 023 456,0000000000000
4.9999999998997
4.98996544
-1003451
-1.003456E+14
-1003456&
−1 003 456
feilsortering 4.9999999998997
4.98996544
-1003451
-1.003456E+14
-1003456&
−1 003 456
4.9999999998997
4.98996544
-1003450.9999998
-1.0034559999998E+14
-1003455.99999982&
−1 003 455,99999982
feilsortering 4.9999999998997
4.98996544
-1003450.9999998
-1.0034559999998E+14
-1003455.99999982&
−1 003 455,99999982
4.9999999998997
4.98996544
-1003451
-1.003456E+14
-1003456.0000000000001&
−1 003 456,0000000000000
feilsortering 4.9999999998997
4.98996544
-1003451
-1.003456E+14
-1003456.0000000000001&
−1 003 456,0000000000000
5
4.99999544
-451
-45599999995
-456&
−456
5
4.99999544
-451
-45599999995
-456&
−456
5
4.999995439
-451.1
-45609999995
-456.1&
−456,1
5
4.99999544
-451
-45599999995
-456&
−456
5
4.999995441
-450.9
-45589999995
-455.9&
−455,9
5
4.99999544
-451
-45599999995
-456&
−456
5
5.00000056
61
5600000005
56&
56
5
5.00000056
61
5600000005
56&
56

Hvis forskjellen blir for liten i forhold til absoluttverdien av tallene, sorteres negative flyttall oftest bakvendt. Jeg finner i farten ingen vei utenom det problemet.

Et annet «problem» er kanskje at {{formatnum:}} er deler i grupper på høyre side av komma. Jeg er neimenn ikke sikker på hva standarden skal være her.

Men tross de problemene er vel dette en forbedring? Så spørs det heller på de problemene jeg ennå ikke ser ... :) — the Sidhekin 15. mar 2008 kl. 11:15 (CET)

Jo, dette ser jo bra ut. Klarer du å finne grenseområdene? Max/min for sortering, og hvor mange desimaler man kan bruke på + / - siden? Er et fornutig tallområde for positive tall 1 000 000 000 til 0,0000000001? Av erfaring vet jeg at sortering her på wikipedia trenger mange tester for å finne feil. Jeg skjønner fortsatt ikke hvorfor forslaget mitt sorterer 56 og 58 feil :-S — Kagee 15. mar 2008 kl. 11:27 (CET)
Hmm, jeg gjør det kanskje vanskeligere enn det behøver å være. Gi meg noen minutter med eksperimentering — forvent uforventet sortering i tabellen mens arbeid pågår. :)the Sidhekin 15. mar 2008 kl. 12:20 (CET)
Ugh, nei, så vanskelig ser det ut til å være. Jeg trenger en pustepause; skal heller se om jeg kan svare på spørsmålene senere i dag. — the Sidhekin 15. mar 2008 kl. 12:45 (CET)

Det ser ut til å være begrenset hva mer jeg får til, så her følger heller grenseområdene for den versjonen jeg har nå.

Dessverre ser det ut til at grensene varierer: Presisjonen er ikke forutsigbar. (Er det forskjellige versjoner av programvaren installert på de forskjellige maskinene i server-poolen?) Ta tallene under med en liten klype salt.

Det følgende er de feilsituasjonene jeg kjenner til; det er godt mulig det fins flere.

Negative tall med for store krav til presisjon[rediger kilde]

Jeg skrev først at dette gjaldt flyttall, men det omfatter naturligvis for store heltall også. Problemet inntreffer ved et varierende antall «gjeldende» sifre, avhengig av magnitude, valg av konstanter i malen, presisjonen på serveren og tydeligvis enda flere faktorer:

Tall med mal Forventet Kommentar
4.99999999
4
-99999995.000001
-1.0E+16
-100000000.000001&
−100 000 000,000001
8 Femten gjeldende sifre blir for mye
4.99999999
4
-99999995.000002
-1.0E+16
-100000000.000002&
−100 000 000,000002
7 Femten gjeldende sifre blir for mye
4.99999999
3.9999999999999
-99999995.00001
-1.0000000000001E+16
-100000000.00001&
−100 000 000,00001
6 Fjorten gjeldende sifre kan gå bra
4.99999999
3.9999999999998
-99999995.00002
-1.0000000000002E+16
-100000000.00002&
−100 000 000,00002
5 Fjorten gjeldende sifre kan gå bra
4.999999899999
-5.0001
-1000009995
-1.00001E+17
-1000010000&
−1 000 010 000
4 Seks gjeldende sifre kan bli for mye
4.999999899998
-5.0002
-1000019995
-1.00002E+17
-1000020000&
−1 000 020 000
3 Seks gjeldende sifre kan bli for mye
4.99999989999
-5.001
-1000099995
-1.0001E+17
-1000100000&
−1 000 100 000
2 Fem gjeldende sifre skulle alltid gå bra
4.99999989998
-5.002
-1000199995
-1.0002E+17
-1000200000&
−1 000 200 000
1 Fem gjeldende sifre skulle alltid gå bra

Fjorten gjeldende sifre er yttergrensen, og med litt innsats kan jeg vel nærme meg den, men er det verdt det?

Positive tall av for stor magnitude[rediger kilde]

Tall med mal Forventet Kommentar
10
500000005
5.0E+16
5.0E+24
49999999999999900&
49 999 999 999 999 900
6 For stort
10
500000005
5.0E+16
5.0E+24
49999999999999800&
49 999 999 999 999 800
5 For stort
9.999999999999
500000004.9999
4.999999999999E+16
4.999999999999E+24
49999999999990000&
49 999 999 999 990 000
4 Varierer(?)
9.999999999998
500000004.9998
4.999999999998E+16
4.999999999998E+24
49999999999980000&
49 999 999 999 980 000
3 Varierer(?)
9.9999999999
500000004.99
4.9999999999E+16
4.9999999999E+24
49999999999000000&
49 999 999 999 000 000
2 Går bra
9.9999999998
500000004.98
4.9999999998E+16
4.9999999998E+24
49999999998000000&
49 999 999 998 000 000
1 Går bra

Dette kan jeg dytte videre, om det betyr noe. Det er ikke engang spesielt dyrt; jeg bare regnet med at vi ikke trenger større tall. :)

Negative tall av for stor magnitude[rediger kilde]

Tall med mal Forventet Kommentar
0.1
-489999995
-4.9E+16
-4.9E+24
-49000000000000000&
−49 000 000 000 000 000
4
0
-499999995
-5.0E+16
-5.0E+24
-50000000000000000&
−50 000 000 000 000 000
3 Akkurat på kanten
-0.1
-509999995
-5.1E+16
-5.1E+24
-51000000000000000&
−51 000 000 000 000 000
2 For stort
-0.2
-519999995
-5.2E+16
-5.2E+24
-52000000000000000&
−52 000 000 000 000 000
1 For stort

Som over: Dette kan jeg dytte på, om vi trenger mer.

Negative tall av for liten magnitude[rediger kilde]

Tall med mal Forventet Kommentar
5
5
5
5
-0&
−0
7 (negativ 0)
5
5
5
5
-0.00000000000000000000004&
−0,00000000000000000000004
6 Feiler
5
5
5
5
-0.00000000000000000000008&
−0,00000000000000000000008
5 Feiler
5
5
5
4.9999999999996
-0.000000000000000000004&
−0,000000000000000000004
4 Varierer
5
5
5
4.9999999999992
-0.000000000000000000008&
−0,000000000000000000008
3 Varierer
5
5
5
4.99999999996
-0.0000000000000000004&
−0,0000000000000000004
2 OK
5
5
5
4.99999999992
-0.0000000000000000008&
−0,0000000000000000008
1 OK

Igjen, om det betyr noe, kan jeg dytte det videre. :)

Aritmetikk med maler, magic words og ParserFunctions var ikke så lett som jeg først trodde, men her har jeg et nytt og kraftigere (men kanskje for tungt?) forslag. For å gjennomføre det uten for mye plunder har jeg laget fire maler:

  1. Bruker:Sidhekin/sorterbar - som altså avhenger av de andre
  2. Bruker:Sidhekin/magnitude - en matematisk mal
  3. Bruker:Sidhekin/magnitude/vindu - en «subrutine» til malen over
  4. Bruker:Sidhekin/10^ - nok en matematisk mal

(De andre malene kan godt tenkes være nyttige i andre tilfeller også. Jeg har her bare brukt dem til å trekke ut felles/gjentatt kode.)

Tall med mal Kommentar Skjult tekst!
3&507&10023456&10 023 456 3&507&10023456&10 023 456
3&507&10023455.9999982&10 023 455,9999982 3&507&10023455.9999982&10 023 455,9999982
3&507&10023456.0000000000001&10 023 456,0000000000000 3&507&10023456.0000000000001&10 023 456,0000000000000
1&494&899654.4&−1 003 456 feilsortering 1&494&899654.4&−1 003 456
1&494&899654.40000002&−1 003 455,99999982 feilsortering 1&494&899654.40000002&−1 003 455,99999982
1&494&899654.4&−1 003 456,0000000000000 feilsortering 1&494&899654.4&−1 003 456,0000000000000
1&498&544000&−456 1&498&544000&−456
1&498&543900&−456,1 1&498&544000&−456
1&498&544100&−455,9 1&498&544000&−456
3&501&56&56 3&501&56&56

Grenseverdiene følger:

Negative tall med for store krav til presisjon[rediger kilde]

Dette problemet kommer jeg ikke rundt med disse verktøyene; ikke uten overkill i alle fall. Problemet inntreffer ved et varierende antall «gjeldende» sifre, avhengig av {{#expr:}}-presisjonen på serveren:

Tall med mal Forventet Kommentar
1&492&900000&−100 000 000,000001 8 Femten gjeldende sifre blir for mye
1&492&900000&−100 000 000,000002 7 Femten gjeldende sifre blir for mye
1&492&899999.99999999&−100 000 000,00001 6 Fjorten gjeldende sifre varierer
1&492&899999.99999998&−100 000 000,00002 5 Fjorten gjeldende sifre varierer
1&492&899999.9999999&−100 000 000,0001 4 Tretten gjeldende sifre varierer
1&492&899999.9999998&−100 000 000,0002 3 Tretten gjeldende sifre varierer
1&492&899999.999999&−100 000 000,001 2 Tolv gjeldende sifre går bra
1&492&899999.999998&−100 000 000,002 1 Tolv gjeldende sifre går bra

Vi kan stole på at tolv sifre går bra og femten sifre feiler; mellom der varierer det. Hver gang jeg tar reload (eller ny forhåndsvisning) gir {{#expr:10000000000001}} enten 1E+13 (og da sorterer bare inntil tolv sifre korrekt) eller 10000000000001 (med korrekt sortering av inntil fjorten sifre); denne gangen ble det 10000000000001. Forskjellig programvare eller konfigurasjon på serverne i poolen, antar jeg.

I praksis vil jeg tvile på at vi har bruk for mer enn tolv gjeldende sifre ved sortering av negative tall. (Positive tall trenger jeg ikke dytte gjennom {{#expr:}}, så dette gjelder ikke dem.)

Positive tall av for stor magnitude[rediger kilde]

Tall med mal Forventet Kommentar
3&540&50000000000000000000000000000000000000001&50 000 000 000 000 000 000 000 000 000 000 000 000 000 1 Går bra
3&540&50000000000000000000000000000000000000002&50 000 000 000 000 000 000 000 000 000 000 000 000 000 2 Går bra
3&541&500000000000000000000000000000000000000001&500 000 000 000 000 000 000 000 000 000 000 000 000 000 3 Går bra
3&541&500000000000000000000000000000000000000002&500 000 000 000 000 000 000 000 000 000 000 000 000 000 4 Går bra
3&541&5000000000000000000000000000000000000000001&5 000 000 000 000 000 000 000 000 000 000 000 000 000 000 5 For stort
3&541&5000000000000000000000000000000000000000002&5 000 000 000 000 000 000 000 000 000 000 000 000 000 000 6 For stort

Trenger vi større tall, så bare si fra eller fiks det selv, om dere vil: Denne grensen er triviell å flytte, med marginal run-time-cost. Men dette er vel allerede mye mer enn vi trenger?

Negative tall av for stor magnitude[rediger kilde]

Tall med mal Forventet Kommentar
1&460&490000&−51 000 000 000 000 000 000 000 000 000 000 000 000 000 6 Går bra
1&460&480000&−52 000 000 000 000 000 000 000 000 000 000 000 000 000 5 Går bra
1&459&490000&−510 000 000 000 000 000 000 000 000 000 000 000 000 000 4 Går bra
1&459&480000&−520 000 000 000 000 000 000 000 000 000 000 000 000 000 3 Går bra
1&459&490000&−510 000 000 000 000 000 000 000 000 000 000 000 000 000 2 For stort
1&459&480000&−520 000 000 000 000 000 000 000 000 000 000 000 000 000 1 For stort

Bortsett fra presisjonsbegrensningene er dette som de positive; det er bare greiest å presentere dem hver for seg. :)

Negative tall av for liten magnitude[rediger kilde]

Tall med mal Forventet Kommentar
2&-0&−0 7 (negativ 0; kanskje strengt tatt ikke et negativt tall ...)
1&534&1000000&−0,000000000000000000000000000000000000000000000004 6 Feiler
1&534&999999.99999999&−0,000000000000000000000000000000000000000000000008 5 Varierer
1&534&999999.9999996&−0,0000000000000000000000000000000000000000000004 4 Varierer
1&534&999999.9999992&−0,0000000000000000000000000000000000000000000008 3 OK?
1&534&999999.999996&−0,000000000000000000000000000000000000000000004 2 OK
1&534&999999.999992&−0,000000000000000000000000000000000000000000008 1 OK

Trenger vi negative tall av mindre magnitude, så bare si fra eller fiks det selv, om dere vil: Denne grensen, selv om den flyter litt ut, er triviell å flytte, med marginal run-time-cost. Men dette er vel allerede mye mer enn vi trenger?

Positive tall av for liten magnitude eller med for store krav til presisjon[rediger kilde]

Ingen problemer. Vel, kanskje javascriptet gir opp til sist. Hva vet vel jeg? :)

the Sidhekin 21. mar 2008 kl. 11:52 (CET)

Jeg prøver[rediger kilde]

Jeg har nå lagt inn følgende:

  1. {{magnitude}} – en matematisk mal
  2. {{magnitude/vindu}} – en «subrutine» til malen over
  3. {{10^}} – nok en matematisk mal

Straks følger en oppdatering av selve {{sorterbar}}. Blir det problemer, holder det å rulle den ene oppdateringen tilbake; resten gjør ingen fortred. :) — the Sidhekin (d) 16. mai 2008 kl. 22:10 (CEST)[svar]

Ting går bra? Det drepte ikke serveren, i det minste ... :) — the Sidhekin (d) 16. mai 2008 kl. 22:21 (CEST)[svar]

Problemer med sortering[rediger kilde]

Jeg har jobbet med Stortingsvalgene den siste tiden, og har laget en rekke tabeller (nå ligger de på Bruker:Røed/Stortinget), men med den utformingen fungerer ikke sorteringen korrekt. 2005 (revisjon), funger. men, jeg ønsker i utgangspunktet den andre utformingen. Kan noen se hva som er feil? Mvh Røed (d) 2. mar 2009 kl. 23:33 (CET)

Fikk det til ved å flytte salen til høyresiden av tabellen, usikker på hvorfor det funket. Mvh Røed (d) 3. mar 2009 kl. 00:09 (CET)
Uff ja, sorteringsrutinen liker visst hverken colspan eller rowspan. Det fins work-arounds, men de går på å unngå colspan og rowspan. Du har funnet én variant, hvor du legger rowspan så langt til høyre at sorteringen slipper å ta hensyn til den. Se bergensraden i Fylke (Norge)#Dagens fylker for en annen. Se endelig Bruker:Røed/Stortinget#Stortingsvalget 2001, hvor jeg har tatt meg den frihet å demonstrere en tredje. :) — the Sidhekin (d) 3. mar 2009 kl. 08:02 (CET)