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.
Excel ja desimaalit
27
1919
Vastaukset
- 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 33Lisä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-resultTROLLI
- 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
Olet taitava
monessa asiassa. Myös siinä, miten veit sydämeni. Äkkiarvaamatta, pikkuhiljaa. Yhtäkkiä huomasin että minusta puuttuu jo747514Sinällään hauska miten jostakin
jaksetaan juoruta vaikka mitä. Jakorasia yms. Raukkamaista toimintaa. Annetaan jokaisen elää rauhassa eikä levitellä per583183- 372446
Miten voit manipuloida katsojalukuja?
Palstatrolli ja väsynyttä sontaa palstalle suoltava Varmakkakkiainen on viime aikoina vedonnot siihen, että hänen ketjuj72080Osuuspankki Kuhmo!
Ei pysty pitämään yhtä Otto pankkiautomaattia toiminnassa Ksupermarketin kanssa,20 vuotta sitten Kuhmossa oli neljä auto332012- 201938
- 131887
Rakkaalleni!
Halusin tulla kertomaan, että sinua ajattelen ja ikävöin vaikka olen sukuloimassa. Meinasin herkistyä, kun tykkään sinus151663- 531595
- 181579