Excel ja desimaalit

Anonyymi

Käytän usein excelin if-funktiota, mutta nyt törmäsin ongelmaan. Kyse oli yksinkertaisesta kaavasta jossa verrattiin onko kahden solun tulos nolla (A3-B3=0). Soluissa oli samat luvut, mutta if-funktio väitti tuloksen olevan epätosi. Soluissa olevat luvut ovat tallennettuja ei kerto- eikä jakolaskujen ym. tuloksia joista olisi syntynyt epämääräisiä desimaaleja. Luvut soluissa ovat:
161 985,14000000000-161 070,05000000000= 915,09000000002600.
Eli olen tallentanut A3 161 985,14 ja B3 161 070,05, excel saa näiden kahden luvun erotukseksi ihan oikein 915,09, mutta kun katsoo tarpeeksi paljon desimaaleja niin sieltä löytyy muuta kuin nollia. Mistä excel saa nuo loppuosan desimaalit.

27

1824

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Selvennys, A3 on 915,09 ja B3 on tuon laskutoimituksen tulos jossa nuo epämääräiset loppudesimaalit.

      • Anonyymi

        Aivan, niin käsitinkin.


    • Anonyymi

      Tämä asiahan käsiteltiin parinviikon sisään jo kertaalleen, mutta ei se mitään kerrataan. Excelin laskentatarkkuus on 16 numeroa, ja tällä tiedolla kaavat palauttavat laskentatuloksen. On aivan eri juttu kuinka luku esitetään, jokaisen solun tieto voidaan muotoilla käyttäjän haluamalla tavalla, laskentaan se ei vaikuta.

      Mutta mutta, excelin asetuksissa on mahdollisuus määritellä ruksilla, käytetäänkö laskennassa oletustarkkuutta, vai sitä mihin muotoiltu (näkyvä) tulos edellyttää.

      Jos ruksi on paikallaan, ja solun muotoilussa määrätään näytettäväksi luku kahden desimaalin tarkkuudella, silloin se myös lasketaan sen mukaan.

      • Anonyymi

        Lisätäänpä vielä:

        "Mistä excel saa nuo loppuosan desimaalit."

        Silloin kun ruksi on laitettu, ja normaalista laskentatarkkuudesta on luovuttu, tapahtuu kahden desimaalin luvulle sellaista, että tämän kahden desimaalin jälkeen tulevat numerot muutetaan nolliksi. Eli ei exceli saa niitä desimaaleja mistään, vaan ne on aina mukana, vaikka laskisit kahdendesimaalin tarkkuudella.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä:

        "Mistä excel saa nuo loppuosan desimaalit."

        Silloin kun ruksi on laitettu, ja normaalista laskentatarkkuudesta on luovuttu, tapahtuu kahden desimaalin luvulle sellaista, että tämän kahden desimaalin jälkeen tulevat numerot muutetaan nolliksi. Eli ei exceli saa niitä desimaaleja mistään, vaan ne on aina mukana, vaikka laskisit kahdendesimaalin tarkkuudella.

        Lisätäänpä vielä:

        Tämä vaihe jossa siirrytään muunneltuun laskentatarkkuuteen, vaihtelee eri taulukkolaskentaohjelmien välillä. Exceli lisää nollat, toisilla tapahtuu luvun pyöristämisiä.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä:

        Tämä vaihe jossa siirrytään muunneltuun laskentatarkkuuteen, vaihtelee eri taulukkolaskentaohjelmien välillä. Exceli lisää nollat, toisilla tapahtuu luvun pyöristämisiä.

        Lisätäänpä vielä:

        Korjaus, laskentatarkkuus oli 15 numeroa, eikä 16 kuten yllä tulin maininneeksi.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä:

        Korjaus, laskentatarkkuus oli 15 numeroa, eikä 16 kuten yllä tulin maininneeksi.

        Kiitos vastauksista. En kuitenkaan ihan ymmärrä miksi kahden luvun, jotka on tallennettu kahdella desimaalilla, vähentäminen keskenään aiheuttaa tulokseen outoja loppudesimaaleja,
        Yritin myös etsiä asiasta aikaisempaa keskustelua, en löytänyt sitäkään, minulla taitaa siis olla ymmärryksessä ja osaamisessa puutteita.


      • Anonyymi
        Anonyymi kirjoitti:

        Kiitos vastauksista. En kuitenkaan ihan ymmärrä miksi kahden luvun, jotka on tallennettu kahdella desimaalilla, vähentäminen keskenään aiheuttaa tulokseen outoja loppudesimaaleja,
        Yritin myös etsiä asiasta aikaisempaa keskustelua, en löytänyt sitäkään, minulla taitaa siis olla ymmärryksessä ja osaamisessa puutteita.

        Oletusarvoisesti, solun sisältämä luku tallennetaan AINA 15 numeron tarkkuudella. Samalla tallennetaan myös tieto kuinka olet halunnut solussa olevan tiedon näytettävän.

        Jos laskentatarkkuutta ei ole muutettu:
        A1 => 1 => 1.000 000 000 000 00
        B1 => 3 => 3.000 000 000 000 00
        C1 => A1 / B1 => 0,333 333 333 333 33
        Mutta se näytetään sinulle 0,33

        Laskennassa kuitenkin käytetään lukua 0,333 333 333 333 33


      • Anonyymi
        Anonyymi kirjoitti:

        Oletusarvoisesti, solun sisältämä luku tallennetaan AINA 15 numeron tarkkuudella. Samalla tallennetaan myös tieto kuinka olet halunnut solussa olevan tiedon näytettävän.

        Jos laskentatarkkuutta ei ole muutettu:
        A1 => 1 => 1.000 000 000 000 00
        B1 => 3 => 3.000 000 000 000 00
        C1 => A1 / B1 => 0,333 333 333 333 33
        Mutta se näytetään sinulle 0,33

        Laskennassa kuitenkin käytetään lukua 0,333 333 333 333 33

        Lisätäänpä vielä:

        Jos nyt laitat D1 => 3,33 tallentuu soluun luku:

        0,330 000 000 000 00

        tätä D1 ja edellisen C1 vertailtaessa, IF() funktiolla, on tulos epätosi.

        C1 => 0,333 333 333 333 33
        D1 => 0,330 000 000 000 00

        Vaikka sinulle näytetään kahdendesimaalin tarkkuudella molemmissa soluissa olevan saman luvun:

        0,33


      • Anonyymi
        Anonyymi kirjoitti:

        Oletusarvoisesti, solun sisältämä luku tallennetaan AINA 15 numeron tarkkuudella. Samalla tallennetaan myös tieto kuinka olet halunnut solussa olevan tiedon näytettävän.

        Jos laskentatarkkuutta ei ole muutettu:
        A1 => 1 => 1.000 000 000 000 00
        B1 => 3 => 3.000 000 000 000 00
        C1 => A1 / B1 => 0,333 333 333 333 33
        Mutta se näytetään sinulle 0,33

        Laskennassa kuitenkin käytetään lukua 0,333 333 333 333 33

        "Oletusarvoisesti, solun sisältämä luku tallennetaan AINA 15 numeron tarkkuudella."

        Ei todellakaan tallenneta"oletusarvoisesti" eikä "AINA" 15 numeron tarkkuudella. Todellisuudessa ei koskaan, ei ikinä.


      • Anonyymi
        Anonyymi kirjoitti:

        "Oletusarvoisesti, solun sisältämä luku tallennetaan AINA 15 numeron tarkkuudella."

        Ei todellakaan tallenneta"oletusarvoisesti" eikä "AINA" 15 numeron tarkkuudella. Todellisuudessa ei koskaan, ei ikinä.

        TROLLI, olisit jättänyt sotkematta asiallista ketjua.


      • Anonyymi
        Anonyymi kirjoitti:

        "Oletusarvoisesti, solun sisältämä luku tallennetaan AINA 15 numeron tarkkuudella."

        Ei todellakaan tallenneta"oletusarvoisesti" eikä "AINA" 15 numeron tarkkuudella. Todellisuudessa ei koskaan, ei ikinä.

        Excel käyttää liukulukujen tallentamisessa IEEE 754 -standardin kuvaamaa "decimal64" tallennusmuotoa, liukuluku koodataan 64 kpl binääriseen bittiin siten että matissassa on 16 kpl kymmenjärjestelmän digittejä ja exponentin desimaalinen lukuarvo voi olla korkeintaan 384.


      • Anonyymi
        Anonyymi kirjoitti:

        Excel käyttää liukulukujen tallentamisessa IEEE 754 -standardin kuvaamaa "decimal64" tallennusmuotoa, liukuluku koodataan 64 kpl binääriseen bittiin siten että matissassa on 16 kpl kymmenjärjestelmän digittejä ja exponentin desimaalinen lukuarvo voi olla korkeintaan 384.

        "siten että matissassa on 16 kpl"

        Nykäsen Matistako sinä puhut?

        Mitä nuo "digittejä" sitten, Brikettejä myydään, 10 kg erissä.


      • Anonyymi
        Anonyymi kirjoitti:

        Excel käyttää liukulukujen tallentamisessa IEEE 754 -standardin kuvaamaa "decimal64" tallennusmuotoa, liukuluku koodataan 64 kpl binääriseen bittiin siten että matissassa on 16 kpl kymmenjärjestelmän digittejä ja exponentin desimaalinen lukuarvo voi olla korkeintaan 384.

        "desimaalinen lukuarvo voi olla korkeintaan 384"

        Mitäs se tuo olevinaan tarkoittaa, olisko ollut tarkoitus kirjoittaa "desimaalinen likiarvo voi olla korkeintaan 384"

        Muutenkin nuo juttusi on kuin M-Karin sössötystä aikoinaan.


      • Anonyymi
        Anonyymi kirjoitti:

        "siten että matissassa on 16 kpl"

        Nykäsen Matistako sinä puhut?

        Mitä nuo "digittejä" sitten, Brikettejä myydään, 10 kg erissä.

        Excel tallentaa liukuluvut niin että mantissassa on 16 kpl kymmenjärjestelmän digittiä ja exponentti koodataan niin että sen kymmenjärjestelmän mukainen arvo voi olla enintään 384. Excel käyttää tähän koodaukseen 64 bittiä, IEEE 754 -standardin "decimal64" koodauksen mukaisesti.

        Tuo tallennuskoodaus aiheuttaa osan "virheistä", koska mm päättymättömiä desimaaleja ei ole mahdollista tallentaa tarkasti käyttäen likulukukoodausta.

        Enemmän "virheitä" aiheutuu siitä että laskentaa varten nuo tallennetut liukuluvut muutetaan binäärijärjestelmään, koska nykytietokoneet eivät suorita laskutoimituksia kymmenjärjestelmässä.

        Tallennetun liukuluvun muunnos binääriksi yleensä aiheuttaa sen että näppäimistöltä syötetty arvo ja sellaisen formulan tulos jonka pitäisi olla yhtä suuri kuin em näppäimistöltä syötetty arvo ovatkin vertailtaessa erisuuria. Esimerkiksi liukuluku 0,1 on binäärimuodosssa päättymätön jono ykkösiä ja nollia.

        Kyseessä ei ole Excelin virhe, eikä virhe lainkaan, vaan ominaisuus. Liukulukujen kanssa ei ole mahdollista, ainakaan toistaiseksi, laskea tietokoneella eksaktisti.

        Jokin ohjelmat käyttävät enemmmän muistia liukulukujen tallentamiseen, esim saman IEEE 754 -standardin "decimal 128" koodausta, jossa mantissassa on 34 kpl kymmenjärjestelmän digittiä ja exponentti koodataan niin että sen kymmenjärjestelmän mukainen arvo voi olla enintään 6144. Tämä koodaus siis kuluttaa kaksinkertaisen bittimäärän verrattuna "decimal64" koodaukseen, ja tietenkin aiheuttaa laskennan hidastumista.


      • Anonyymi
        Anonyymi kirjoitti:

        Excel tallentaa liukuluvut niin että mantissassa on 16 kpl kymmenjärjestelmän digittiä ja exponentti koodataan niin että sen kymmenjärjestelmän mukainen arvo voi olla enintään 384. Excel käyttää tähän koodaukseen 64 bittiä, IEEE 754 -standardin "decimal64" koodauksen mukaisesti.

        Tuo tallennuskoodaus aiheuttaa osan "virheistä", koska mm päättymättömiä desimaaleja ei ole mahdollista tallentaa tarkasti käyttäen likulukukoodausta.

        Enemmän "virheitä" aiheutuu siitä että laskentaa varten nuo tallennetut liukuluvut muutetaan binäärijärjestelmään, koska nykytietokoneet eivät suorita laskutoimituksia kymmenjärjestelmässä.

        Tallennetun liukuluvun muunnos binääriksi yleensä aiheuttaa sen että näppäimistöltä syötetty arvo ja sellaisen formulan tulos jonka pitäisi olla yhtä suuri kuin em näppäimistöltä syötetty arvo ovatkin vertailtaessa erisuuria. Esimerkiksi liukuluku 0,1 on binäärimuodosssa päättymätön jono ykkösiä ja nollia.

        Kyseessä ei ole Excelin virhe, eikä virhe lainkaan, vaan ominaisuus. Liukulukujen kanssa ei ole mahdollista, ainakaan toistaiseksi, laskea tietokoneella eksaktisti.

        Jokin ohjelmat käyttävät enemmmän muistia liukulukujen tallentamiseen, esim saman IEEE 754 -standardin "decimal 128" koodausta, jossa mantissassa on 34 kpl kymmenjärjestelmän digittiä ja exponentti koodataan niin että sen kymmenjärjestelmän mukainen arvo voi olla enintään 6144. Tämä koodaus siis kuluttaa kaksinkertaisen bittimäärän verrattuna "decimal64" koodaukseen, ja tietenkin aiheuttaa laskennan hidastumista.

        Unohdin mainita että riippumatta siitä mitä tahansa koodausta liukululujen tallentamiseen mikäkin ohjelma käyttääkin, niin näiltä "virheitä" ei voi välttyä kun lasketaan binäärisillä tietokoneilla.

        Mitä suurempi muistimäärä (bittimäärä, tavumäärä) käytetään liukuluvun tallennukseen/koodaukseen niin sitä pienempiä "virheiden" absoluttiset lukuarvot ovat, mutta eivät koskaan mene nollaksi. "Virheiden" ilmaantuvuus tosin myös hieman vähenee, mutta ei sekään koskaan mene nollaksi.

        Esimerkiksi MatLab tallentaa liukulukuja kymmenjärjestelmän 16 digitin tarkkuudella. Ja sen huomaa varsin kivuliaasti kun malli on vähänkään vaativampi kuin yksinkertaista nelilaskentaa. MatLab:iin on saatavissa lisuke jonka avulla voi käyttää paljonkin rajumpia laskentatarkkuuksia, silloin varsin kepeähkön mallin laskenta kestää päiviä tai viikkoja, masiinan tuuulettimien käydessä kokoajan täysillä. Vastaavahko, mutta paljon rajoittuneempi ja tyrmäävästi hitaampi lisuke oli aikoinaan saatavilla myös Excelille, ensin DLL, sitten VBA, nimeltään xnumbers, en nyt löytänyt sitä.


      • Anonyymi
        Anonyymi kirjoitti:

        Unohdin mainita että riippumatta siitä mitä tahansa koodausta liukululujen tallentamiseen mikäkin ohjelma käyttääkin, niin näiltä "virheitä" ei voi välttyä kun lasketaan binäärisillä tietokoneilla.

        Mitä suurempi muistimäärä (bittimäärä, tavumäärä) käytetään liukuluvun tallennukseen/koodaukseen niin sitä pienempiä "virheiden" absoluttiset lukuarvot ovat, mutta eivät koskaan mene nollaksi. "Virheiden" ilmaantuvuus tosin myös hieman vähenee, mutta ei sekään koskaan mene nollaksi.

        Esimerkiksi MatLab tallentaa liukulukuja kymmenjärjestelmän 16 digitin tarkkuudella. Ja sen huomaa varsin kivuliaasti kun malli on vähänkään vaativampi kuin yksinkertaista nelilaskentaa. MatLab:iin on saatavissa lisuke jonka avulla voi käyttää paljonkin rajumpia laskentatarkkuuksia, silloin varsin kepeähkön mallin laskenta kestää päiviä tai viikkoja, masiinan tuuulettimien käydessä kokoajan täysillä. Vastaavahko, mutta paljon rajoittuneempi ja tyrmäävästi hitaampi lisuke oli aikoinaan saatavilla myös Excelille, ensin DLL, sitten VBA, nimeltään xnumbers, en nyt löytänyt sitä.

        LOPETA TUO SÖNKKÄÄMINEN
        Et edes käytä oikeita termejä tuossa tarinassasi jota et muutenkaan ymmärrä.

        Esimerkkinä vaikka tuo "digittiä" jota käytetään digitaalisten mittarien tarkkuusominaisuuksista puhuttaessa, koska digitaalisen mittarin näyttö ei aina sisällä numeroita ilmaisemaan mitattua suuretta.

        Mutta takaisin siihen Excelin laskentatarkkuuteen.
        Excelissä laskentatarkkuus tarkoittaa sitä, että mikä tahansa luku, jossa on enemmän kuin 15 numeroa, tallennetaan ja näytetään vain 15 numeron tarkkuudella. Kyseiset numerot voivat olla desimaalipilkun kummalla puolella tahansa. 15:nnen numeron oikealla puolella olevat numerot ovat nollia. Esimerkiksi luvussa 1234567,890123456 on 16 numeroa (7 numeroa ennen desimaalipilkkua ja 9 sen jälkeen). Excelissä se tallentuu ja näkyy muodossa 1234567,89012345 (tämä näkyy kaavarivillä ja solussa). Jos määrität solun lukumuotoilun siten, että kaikki numerot näkyvät (sen sijaan että käyttäisit tieteellistä muotoa kuten 1,23457E 06), huomaat, että luku näkyy muodossa 1234567,890123450. Lopussa oleva 6 (16:s numero) poistetaan ja korvataan 0:lla. Laskentatarkkuus loppuu 15 numeron kohdalla, joten kaikki seuraavat numerot ovat nollia.

        Asia on juuri niin kuin minä jo aiemmin kerroin.


      • Anonyymi
        Anonyymi kirjoitti:

        LOPETA TUO SÖNKKÄÄMINEN
        Et edes käytä oikeita termejä tuossa tarinassasi jota et muutenkaan ymmärrä.

        Esimerkkinä vaikka tuo "digittiä" jota käytetään digitaalisten mittarien tarkkuusominaisuuksista puhuttaessa, koska digitaalisen mittarin näyttö ei aina sisällä numeroita ilmaisemaan mitattua suuretta.

        Mutta takaisin siihen Excelin laskentatarkkuuteen.
        Excelissä laskentatarkkuus tarkoittaa sitä, että mikä tahansa luku, jossa on enemmän kuin 15 numeroa, tallennetaan ja näytetään vain 15 numeron tarkkuudella. Kyseiset numerot voivat olla desimaalipilkun kummalla puolella tahansa. 15:nnen numeron oikealla puolella olevat numerot ovat nollia. Esimerkiksi luvussa 1234567,890123456 on 16 numeroa (7 numeroa ennen desimaalipilkkua ja 9 sen jälkeen). Excelissä se tallentuu ja näkyy muodossa 1234567,89012345 (tämä näkyy kaavarivillä ja solussa). Jos määrität solun lukumuotoilun siten, että kaikki numerot näkyvät (sen sijaan että käyttäisit tieteellistä muotoa kuten 1,23457E 06), huomaat, että luku näkyy muodossa 1234567,890123450. Lopussa oleva 6 (16:s numero) poistetaan ja korvataan 0:lla. Laskentatarkkuus loppuu 15 numeron kohdalla, joten kaikki seuraavat numerot ovat nollia.

        Asia on juuri niin kuin minä jo aiemmin kerroin.

        Lisätäänpä vielä:

        Tuo edellinen oli suora lainaus Microsoftin omasta "Lisätietoja Excelin laskentatarkkuudesta" dokumentista.

        Ja noiden digitaalisen mittareiden "digitti" käsitteeseen, voit syventyä vaikka tuolla:
        https://www.fluke.com/fi-fi/lue-lisaa/blogi/digitaaliset-yleismittarit/tarkkuus-tasmallisyys

        "Numero" ei ole sama kuin "digitti", älä sotke asioita.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä:

        Tuo edellinen oli suora lainaus Microsoftin omasta "Lisätietoja Excelin laskentatarkkuudesta" dokumentista.

        Ja noiden digitaalisen mittareiden "digitti" käsitteeseen, voit syventyä vaikka tuolla:
        https://www.fluke.com/fi-fi/lue-lisaa/blogi/digitaaliset-yleismittarit/tarkkuus-tasmallisyys

        "Numero" ei ole sama kuin "digitti", älä sotke asioita.

        Excel tallentaa liukuluvut (tiettyjä erikoistapauksia lukuunottamatta IEEE 754 -standardissa kuvatun (ns double-precision) "decimal64" koodauksen mukaisesti, jossa mantissassa on 16 kpl kymmenjärjestelmän digittiä ja exponentti koodataan niin että sen kymmenjärjestelmän mukainen arvo voi olla enintään 384. Excel käyttää tähän koodaukseen 64 bittiä,

        Excel esittää vain 15 kymmenjärjestelmän digittiä koska se 16. digitti on erittäin ussein virheellinen.

        https://docs.microsoft.com/en-us/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result


      • Anonyymi
        Anonyymi kirjoitti:

        Excel tallentaa liukuluvut (tiettyjä erikoistapauksia lukuunottamatta IEEE 754 -standardissa kuvatun (ns double-precision) "decimal64" koodauksen mukaisesti, jossa mantissassa on 16 kpl kymmenjärjestelmän digittiä ja exponentti koodataan niin että sen kymmenjärjestelmän mukainen arvo voi olla enintään 384. Excel käyttää tähän koodaukseen 64 bittiä,

        Excel esittää vain 15 kymmenjärjestelmän digittiä koska se 16. digitti on erittäin ussein virheellinen.

        https://docs.microsoft.com/en-us/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result

        TROLLI


    • Anonyymi

      Entäs jos sinne jos-funktion sisään laittaisi pyöristä-funktion ja desimaalimääräksi molempiin 2....

      KikkaEkku

      • Anonyymi

        Tilanteissa joissa hakukohde tai hakuperuste on laskennan tulos täytyy käyttää pyöristystä, riippumatta ohjelmasta ja riippumatta raudasta. Excelissä käsitääkseni pyöristäminen 12 desimaaliin riittää siivoamaan nuo liukulukulaskennasta väistämättömästi syntyvät poikkeavuudet.

        Etenkään kellonaikaa tai ajankohtaa ei kannata pyöristää niin karheaksi kuin kahteen desimaaliin, koska Excelissä yksi vuorokausi on desimaalisena lukuarvo 1. Josta seuraa että desimaalinen lukuarvo 0,01 vastaa 14,4 minuuttia ̶ joka on pienin aikaväli (gap) jonka kahteen desimaaliin pyöristetyillä kellonajoilla tai ajankohdilla voi esittää.

        Toisinaan näitä poikkeavuuksilta voi välttyä Exelissä laskemalla tarkasti sekalumuodossa, mutta ollenkaan aina laskennan tulos ei mahdu Excelin tukemiin sekalukumuotoihin jolloin Excel kääntää tuloksen liukuluvuksi. Yksinkertainen esimerkki:

        Excelissä soluun näppäimistöltä kirjoitetttu (tai alta kopioitu ja pastettu) sekalukuja käyttävä yhtälö:

        =1/3 1/3 1/3-1

        tuottaa aina tuloksen == 0.

        Mutta soluun näppäimistöltä kirjoitetttu (tai alta kopioitu) liukulukuja käyttävä vastaava kaava:

        =0.333333333333333 0.333333333333333 0.333333333333333-1

        tuottaa nollasta eroavan tuloksen jonka pitäisi päässälaskun perustella olla -1,000000000000000E-15 mutta ei aivan tarkasti ole (arvo hieman riippuu Excelin versioista ja CPU/ALU valmistajasta ja versiosta).


      • Anonyymi
        Anonyymi kirjoitti:

        Tilanteissa joissa hakukohde tai hakuperuste on laskennan tulos täytyy käyttää pyöristystä, riippumatta ohjelmasta ja riippumatta raudasta. Excelissä käsitääkseni pyöristäminen 12 desimaaliin riittää siivoamaan nuo liukulukulaskennasta väistämättömästi syntyvät poikkeavuudet.

        Etenkään kellonaikaa tai ajankohtaa ei kannata pyöristää niin karheaksi kuin kahteen desimaaliin, koska Excelissä yksi vuorokausi on desimaalisena lukuarvo 1. Josta seuraa että desimaalinen lukuarvo 0,01 vastaa 14,4 minuuttia ̶ joka on pienin aikaväli (gap) jonka kahteen desimaaliin pyöristetyillä kellonajoilla tai ajankohdilla voi esittää.

        Toisinaan näitä poikkeavuuksilta voi välttyä Exelissä laskemalla tarkasti sekalumuodossa, mutta ollenkaan aina laskennan tulos ei mahdu Excelin tukemiin sekalukumuotoihin jolloin Excel kääntää tuloksen liukuluvuksi. Yksinkertainen esimerkki:

        Excelissä soluun näppäimistöltä kirjoitetttu (tai alta kopioitu ja pastettu) sekalukuja käyttävä yhtälö:

        =1/3 1/3 1/3-1

        tuottaa aina tuloksen == 0.

        Mutta soluun näppäimistöltä kirjoitetttu (tai alta kopioitu) liukulukuja käyttävä vastaava kaava:

        =0.333333333333333 0.333333333333333 0.333333333333333-1

        tuottaa nollasta eroavan tuloksen jonka pitäisi päässälaskun perustella olla -1,000000000000000E-15 mutta ei aivan tarkasti ole (arvo hieman riippuu Excelin versioista ja CPU/ALU valmistajasta ja versiosta).

        (arvo hieman riippuu Excelin versioista ja CPU/ALU valmistajasta ja versiosta)

        Jaksollinen desimaaliluku on desimaaliluku, jonka desimaaleissa toistuu jokin numero tai numerosarja äärettömän monta kertaa peräkkäin.

        Excelin versio tai CPU/ALU ei näihin vaikuta mitenkään, vain laskennan tuloksen desimaaleja on vähemmän kun laskentatarkkuutta vähennetään.

        1/3 = tulos on päättymätön.


      • Anonyymi
        Anonyymi kirjoitti:

        (arvo hieman riippuu Excelin versioista ja CPU/ALU valmistajasta ja versiosta)

        Jaksollinen desimaaliluku on desimaaliluku, jonka desimaaleissa toistuu jokin numero tai numerosarja äärettömän monta kertaa peräkkäin.

        Excelin versio tai CPU/ALU ei näihin vaikuta mitenkään, vain laskennan tuloksen desimaaleja on vähemmän kun laskentatarkkuutta vähennetään.

        1/3 = tulos on päättymätön.

        "Jaksollinen desimaaliluku on desimaaliluku, jonka desimaaleissa toistuu jokin numero tai numerosarja äärettömän monta kertaa peräkkäin."

        Suurkiitos, tuo oli minulla täysin uusi tieto.

        "Excelin versio tai CPU/ALU ei näihin vaikuta mitenkään, vain laskennan tuloksen desimaaleja on vähemmän kun laskentatarkkuutta vähennetään"

        Kummatikin vaikuttavat. ALU:issa aina toisiaan parannetaan sitä miten ne optimoivat laskennan. Niissä on myös toisiaan bugeja, ainakin yksi bugi on ihan julkisesti tiedossa (se "korjattiin" softakilkkellä). Myös Excelissä on versioiden saatossa paranneltu laskenta-algoritmeja, ne eivät käsittele kaavaa aina siinä järjestyksessä kuin se soluun on kirjoitettu vaan pyrkivät supistamaan kaavan siten että nämä kyseessä olevat poikkeamat pienenevät ja tai vähenevät.

        "1/3 = tulos on päättymätön."

        Suurkiitos, tuo oli minulla täysin uusi tieto.


    • Anonyymi

      Hyvä, kiitos!

    • Anonyymi

      Laskentatarkkuus on 15 numeroa.

    • Anonyymi

      Laskentatarkkuus on kaikissa taulikkolaskenta ohjelmissa 15 numeroa.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kela valvoo lasten tilejä.

      Tämä isoveli Kela kyttää jopa lasten yli 200,- euron rahat jotka on melko varmasti lahjaksi saatu. Se vaikuttaa perheen
      Yhteiskunta
      258
      2746
    2. Nainen, tervetuloa

      Tule luokseni eka vaikka viikoks tai pariksi. Saisin helliä, kannustaa ja tukea sua ja kokata lempi herkkujasi. Pääsisit
      Ikävä
      11
      1703
    3. Mitä haluaisit sanoa hänelle

      Nyt tällä hetkellä?
      Ikävä
      120
      1609
    4. TTK-tähti Saana Akiola paljasti tv-ohjelmassa tapahtuneen ahdistelun

      Olisko pitänyt suunnitella ulostulo paremmin? Nyt lehdet soittelevat kaikki 8 läpi ja kuusi sanoo ettei koskenut häntä.
      Maailman menoa
      16
      1492
    5. Elisa laskuttaa jo sähköpostilaskusta erikseen euron

      Paperilaskuista on otettu lisämaksua jo ajat sitten, mutta nyt Elisa ottaa euron siitä että lähettävät sähköisen laskun
      Maailman menoa
      96
      1355
    6. Oho! Susanna Laine kohtasi epäonnea lomareissulla Italiassa - Avaa tilannetta: "Vähän sahaavaa..."

      Ou nou! Tsemppiä kuitenkin loppulomaan Italiassa, Susanna Laine ja mahdollinen seuralainen! Lue lisää ja katso kuvat:
      Suomalaiset julkkikset
      7
      1200
    7. Väliämme on noin 6 km

      Niin lähellä ja niin kaukana. Sinä olet kotona, minä olen kotona. Olet jo unessa. Mutta kun herään, olet jo töissä ja vä
      Ikävä
      9
      963
    8. Odotatko vielä

      Häntä?????
      Ikävä
      61
      928
    9. Mikä biisi

      Kuvaa sinun ja kaivattusi tämänhetkistä tilannetta? Laittakaa biisejä tulemaan ❤️
      Ikävä
      56
      908
    10. Ensitreffit alttarilla Jyrki paljastaa hääyön intiimiasioista kameroiden sammuttua: "Fyysinen..."

      Ooo-la-laa… Ensitreffit alttarilla -sarjassa alkaa hääparien välillä ns. tunteet kuumenemaan. Lue lisää: https://www.s
      Ensitreffit alttarilla
      1
      895
    Aihe