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

1821

    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. Haluaisitko nähdä

      Hänet alastomana?
      Ikävä
      74
      3550
    2. Hilirimpsistä

      Hyvää huomenta ja kivaa päivää. Ilmat viilenee. Niin myös tunteet. 🧊☕✨🍁❤️
      Ikävä
      201
      2952
    3. Nainen lopeta pakoon luikkiminen?

      Elämä ei oo peli 😔😟
      Ikävä
      25
      2840
    4. Älä elättele

      Toiveita enää. Ihan turhaa. Sotku mikä sotku.
      Ikävä
      49
      2728
    5. Olet täällä. Mutta ei minulle.

      Nyt olen tästä 100% varma. Satuttaa. T: V
      Ikävä
      22
      2624
    6. Kuule rakas...

      Kerrohan minulle lempivärisi niin osaan jatkaa yhtä projektia? Arvaan jo melkein kyllä toki. Olethan sinä aina niin tyyl
      Ikävä
      41
      2425
    7. Miten hitsissä ulosoton asiakas?

      On tää maailma kumma, tässä haisee suuri kusetus ja ennennäkemättömän törkeä *huijaus*! Miten to.monen kieroilu on edez
      Kotimaiset julkkisjuorut
      241
      2058
    8. Törmättiin tänään

      enkä taaskaan osannut reagoida fiksusti. Menen aina lukkoon. Yksi asia on varma: tunteeni sinua kohtaan ovat edelleen v
      Ikävä
      24
      1867
    9. Vieläkö sä

      Rakastat mua?❤️😔
      Ikävä
      42
      1773
    10. 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
      165
      1723
    Aihe