Jaetun laskun pyöristys: miksi sovellus ja taulukko eroavat
Kolmeen osaan jaettu $100.00 lasku jättää yhden sentin, jonka taulukko pudottaa ja jonka Dimesum antaa yhdelle ihmiselle laskun kiinteän tiivisteen perusteella. Tässä on laskettu taulukko, korvaamamme sääntö ja ne kaksi valuuttavirhettä, jotka vain taulukko voi tehdä.
Taulukkosi sanoo $66.66 ja sovellus sanoo $66.67. Tuo yksi sentti on jaetun laskun pyöristystä, ja se on yleisin viesti, jonka saamme ihmiseltä, joka tarkisti Dimesumin Exceliä vastaan. Lyhyt vastaus kuuluu näin: taulukko pyöristää jokaisen osuuden erikseen ja hukkaa ylimääräisen sentin, kun taas Dimesum antaa tuon sentin yhdelle ihmiselle, joka valitaan laskun kiinteällä tiivisteellä, joten osuudet laskevat aina yhteen takaisin summaan.
Ongelma, syy ja korjaus kolmena lauseena, jotka voit poimia mukaasi. $100.00 laskua ei voi maksaa kolmena yhtä suurena summana, joten joku kantaa $33.34. Taulukko, joka pyöristää jokaisen solun, näyttää kolme kertaa $33.33 ja pudottaa hiljaa yhden sentin, kun taas Dimesum pitää sentin ja päättää laskun oman tiivisteen avulla, kuka sen kantaa. Nämä kaksi ovat samaa mieltä jokaisesta laskusta, joka jakautuu tasan, ja eroavat enintään yhden sentin verran henkeä kohden jokaisessa laskussa, joka ei jakaudu.
Oire: sentti, joka on toisella puolella mutta ei toisella
Ilmoitus saapuu meille yleensä aina samalla tavalla. Joku vie ulos kuukauden laskut, rakentaa saldot uudelleen taulukossa ja löytää muutaman sentin erimielisyyden. Kummaltakaan puolelta ei puutu mitään yhtä senttiä enempää laskua kohden, eikä silti kukaan saa niitä täsmäämään.
Kirjoitimme neljästä syystä, joiden vuoksi ryhmän saldo näyttää väärältä, kirjoituksessa miksi jaetut laskut eivät koskaan täsmää. Tämä kirjoitus ottaa niistä ensimmäisen, pyöristetyn sentin, ja seuraa sitä taulukkoon, koska sinne huolellinen ihminen menee tarkistamaan meidät. Se käsittelee myös ne kaksi kohtaa, joissa taulukko menee pieleen ja sovellus ei voi: kahden valuutan laskeminen yhteen yhdessä sarakkeessa ja jenille annetut kaksi desimaalia, joita sillä ei ole.
$100.00 lasku kolmeen osaan, taulukossa ja sovelluksessa
Emma maksaa yhteisestä illallisesta $100.00. Lucas, Sofia ja Emma jakavat sen tasan. Sata dollaria jaettuna kolmella on $33.333 ja niin edelleen loputtomiin, eikä mikään kortti pysty maksamaan sitä.
Taulukko pystyy kyllä pitämään tuon loputtoman luvun. Kirjoita =100/3 kolmeen soluun, muotoile ne kahden desimaalin tarkkuuteen, ja jokainen näyttää $33.33. SUM-solu näyttää $100.00, koska se laskee yhteen piilossa olevat numerot eikä näytöllä näkyviä. Nyt lukija laskee kolme näkyvää solua yhteen laskimella ja saa $99.99.
Huolellinen taulukko pyöristää sen sijaan: =ROUND(100/3, 2) jokaisessa solussa. Nyt jokaisessa solussa on todella $33.33, SUM on todella $99.99, ja sentti on lähtenyt taulukosta. Lucas on velkaa Emmalle $33.33 ja Sofia $33.33, joten taulukon mukaan Emma saa takaisin $66.66. Hänen oman osuutensa piti olla $33.33, mutta hän on maksanut illallisesta $33.34 ilman, että kukaan kirjoitti sitä ylös.
| Missä se jaettiin | Emman osuus | Lucasin osuus | Sofian osuus | Osuudet yhteensä | Emmalle ollaan velkaa |
|---|---|---|---|---|---|
| Dimesum, lasku, jonka tiiviste antaa ylimääräisen sentin Emmalle | $33.34 | $33.33 | $33.33 | $100.00 | $66.66 |
| Dimesum, lasku, jonka tiiviste antaa ylimääräisen sentin Lucasille | $33.33 | $33.34 | $33.33 | $100.00 | $66.67 |
Taulukko, =100/3 näytettynä kahden desimaalin tarkkuudella | $33.33 | $33.33 | $33.33 | $100.00 SUM-solussa, $99.99 näytöllä | $66.67 näytöllä |
Taulukko, =ROUND(100/3, 2) | $33.33 | $33.33 | $33.33 | $99.99 | $66.66 |
Jokainen rivi on laskutoimitusta, jonka voit tehdä itse uudelleen.
Toisella Dimesum-rivillä Lucas on velkaa $33.34 ja Sofia $33.33, ja $33.34 plus $33.33 on $66.67. Pyöristetyssä taulukossa $33.33 plus $33.33 on $66.66. Kumpikaan näistä ei ole virhe. Ne ovat kaksi eri sääntöä yhdestä sentistä, ja vain toinen niistä pitää sentin kirjauksessa.
Miksi jokainen osuus pyöristetään ensin alaspäin
Dimesum jakaa suurimman jakojäännöksen menetelmällä, säännöllä, jota jotkin parlamentit käyttävät muuttaakseen ääniosuudet kokonaisiksi paikoiksi. Jokainen summa tallennetaan valuutan pienimmän yksikön kokonaislukuna, joten $100.00 on 10,000 senttiä. Jokaisen ihmisen tarkka osuus lasketaan murtolukuna, ja sitten kaikki saavat sen alapuolella olevat kokonaiset sentit: 3,333 kukin, yhteensä 9,999.
Siitä jää jäljelle yksi sentti. Ylimääräiset sentit jaetaan yksi kerrallaan niille ihmisille, joiden murtolukuja leikattiin eniten. Tasajaossa jokaisen murtoluku on sama, kolmasosa sentistä, joten sääntö tarvitsee tasapelin ratkaisun. Juuri tuossa tasapelin ratkaisussa ensimmäinen versiomme meni pieleen.
Menetelmän antama takuu on se, jota taulukko ei pysty antamaan: osuudet laskevat yhteen takaisin summaan tarkasti, eikä mikään osuus ole yhtä senttiä kauempana tarkasta arvostaan. Sama laskutoimitus ajetaan tasajaolle, prosenttijaolle, painotetuille osuuksille, tuotteittain jaetun laskun jokaiselle riville ja jokaiselle sen vero- tai tippipotille. Kirjoituksemme sovelluksista, jotka jakavat laskun tuotteittain, näyttää sen neljän hengen illallisella, jossa on alennus.
Mitä kokeilimme ensin: vanhin jäsen otti jokaisen ylimääräisen sentin
Ensimmäinen tasapelin ratkaisumme oli se kaikkein ilmeisin. Jäsenet järjestetään sen mukaan, milloin he liittyivät, joten tasapelit menivät vanhimmalle jäsenelle. Se on deterministinen, se on helppo testata, eikä kukaan voisi yksittäisen laskun kohdalla kutsua sitä epäreiluksi.
Vuoden aikana se on kuitenkin lisämaksu. Kolmen hengen kämppä jakaa vuokran, sähkön, internetin ja ruokaostokset, ja moni noista laskuista jättää sentin yli. Jokainen noista senteistä meni samalle ihmiselle, sille, joka perusti ryhmän. Yksi sentti ei ole mitään; muutama sata niitä samaan suuntaan on kuvio, jonka joku lopulta huomaa taulukossa.
Perustajan vastaus 21. elokuuta 2026 oli, että sen pitäisi kantaa satunnaisen osallistujan, jotta se tasoittuisi monen laskun aikana. Satunnaisuudessa oli meidän kannaltamme yksi koukku. Dimesum laskee laskun jaon uudelleen aina, kun sitä muokataan, ja muokkaus kirjataan uutena merkintänä, joka esittää jaon uudelleen, kuten kuvataan kirjoituksessa miksi muokkauksen täytyy esittää jakonsa uudelleen. Aidolla satunnaisarvonnalla muokkaus, joka muutti vain laskun nimeä, arpoisi uudelleen, siirtäisi sentin jollekulle toiselle ja kirjaisi oikaisun rahasta, joka ei koskaan liikkunut.
Korjaus: kierrätä ylimääräistä senttiä laskun kiinteällä tiivisteellä
Niinpä satunnaisesta tuli näennäisesti satunnainen ja kiinteä. Jokaisella laskulla on oma tunnisteensa, ja tiivistämme sen FNV-1a-funktiolla, pienellä tiivistefunktiolla, joka antaa saman vastauksen jokaisella koneella ja jokaisella koontiversiolla. Tiiviste valitsee, mistä kohdasta järjestettyä listaa ylimääräisten senttien jakaminen alkaa. Sama lasku, sama vastaus, joka kerta kun se lasketaan; monen laskun aikana aloituskohta osuu jokaiseen ihmiseen suunnilleen yhtä usein.
Järjestetty lista on yhä suurimman jakojäännöksen järjestys, ja tasapelit ratkaistaan vanhin jäsen ensin. Tiiviste ainoastaan siirtää sitä kohtaa, josta jakaminen alkaa. Tasan kolmeen osaan jaetussa laskussa se tarkoittaa, että jokainen lasku valitsee yhden kolmesta ihmisestä kantamaan $33.34, eikä tuo valinta koskaan muutu sen laskun kohdalla.
Juuri siksi taulukkosi ja sovellus ovat eri laskuissa eri tavoin eri mieltä. Yhdellä $100.00 illallisella tiiviste antaa sentin Emmalle, ja ne ovat samaa mieltä siitä, että hänelle ollaan velkaa $66.66. Seuraavalla se antaa sentin Lucasille, ja sovellus sanoo $66.67. Taulukko, jossa on yksi sääntö jokaiselle riville, ei pysty toistamaan sitä, ellei se kopioi tiivistettä.
Hinta, jonka hyväksyimme
Kaksi sisällöltään identtistä laskua voi nyt erota yhden sentin verran. Kaksi $100.00 illallista samojen kolmen ihmisen kesken voi jakautua niin, että toisessa Emma maksaa $33.34 ja toisessa Sofia $33.34. Kaksi omaa päästä päähän ulottuvaa testiämme vertasi yhden laskun osuuksia toisen laskun osuuksiin ja hajosi sinä päivänä, kun tämä julkaistiin; nyt ne tarkistavat säännön tuloksen sen sijaan.
Uskomme, että se on silti oikea vaihtokauppa. Jokaisen saldon alla oleva tilikirja on vain lisäävä, joten sentti, joka liikkuu ilman syytä, kirjattaisiin ylös ikuisesti; rakenne on kuvattu kirjoituksessa vain lisäävä tilikirja jokaisen jaon takana. Sentti, joka on kiinteä laskukohtaisesti ja jakautuu ihmisten kesken, ei koskaan tarvitse oikaisua.
Sarake, joka laskee dollarit ja eurot yhteen, ei ole summa
Toinen ero on senttiä suurempi, ja se on aina taulukon oma virhe. Matkalla Emma maksaa €90 hotelliyön ja $60 museolipun, ja taulukossa on yksi Summa-sarake ja sen alla SUM. Se sanoo 150. Tuolla luvulla ei ole mitään valuuttaa, joten kukaan ei voi olla sitä velkaa.
Dimesum pitää jokaisen saldon valuutoittain eikä koskaan laske yhteen valuuttojen yli. Ryhmä näkee, mitä ollaan velkaa euroissa, ja erikseen, mitä ollaan velkaa dollareissa. Jos ryhmä sopii kurssista, Dimesum voi näyttää saldot yhteen valuuttaan laskettuina, kurssilla merkittyinä, ja itse velka pysyy siinä valuutassa, jossa raha käytettiin.
Virheet, jotka syntyvät toisin toimimisesta, ovat kirjoituksessa rahavirheet, joita toinen valuutta aiheuttaa. Jos matka on syy vertailuusi, monivaluuttaiset kulujenjakosovellukset asettaa rinnakkain sen, miten muut sovellukset käsittelevät toista valuuttaa.
Yhteen laskeminen tuo kuitenkin mukanaan oman pyöristyksensä. Muunnos pyöristää kokonaisiin sentteihin, puolikkaat nollasta poispäin, joten saldot, joiden summa jeneissä oli nolla, voivat dollareissa olla sentin yli. Annamme pienimmän jäsentunnisteen omaavan jäsenen ottaa vastaan enintään yhden pienimmän yksikön muunnosta kohden, ja sen yli menevä selvityssuunnitelma hylätään. Suunnitelma, joka on hiljaa $1 pielessä, on virhettä pahempi, koska joku maksaisi sen.
Jenillä ei ole senttejä, ja taulukko antaa sille silti kaksi
Kolmas ero näkyy jokaisella ikinä tehdyllä Japanin-matkalla. Jenillä ei ole sentin kaltaista pienempää yksikköä: sen eksponentti valuuttastandardissa ISO 4217 on nolla, joten ¥1 on pienin summa, jonka kukaan voi maksaa. ¥10,000 illallinen kolmeen osaan jaettuna on Dimesumissa ¥3,334, ¥3,333 ja ¥3,333, jotka laskevat yhteen ¥10,000 summaan.
Rahalle muotoiltu taulukko näyttää kolme kertaa ¥3,333.33, luvun, jota mikään kolikko ei maksa. Pyöristä se kokonaisiin jeneihin, niin se näyttää kolme kertaa ¥3,333, mikä on yhteensä ¥9,999. Jeni menettää yhden yksikön samalla tavalla kuin dollari menetti sentin.
Rikoimme tämän itse ennen kuin lopulta korjasimme sen.
Koodi, joka lukee summan tekstirivistä, muutti sen kerran pienemmiksi yksiköiksi kertomalla sadalla, mikä on oikein dollareille ja euroille ja väärin jeneille: ¥2,000 taksista tuli ¥200,000. Se oli peräti satakertainen virhe, eikä mikään pyöristyssääntö olisi voinut napata sitä.
Muunnos lukee nyt kunkin valuutan eksponentin ISO-taulukosta, ja luku, joka on valuutan pienintä yksikköä tarkempi, hylätään eikä pyöristetä. Summien lukemisella tekstistä on meille pidempi historia, joka kerrotaan kirjoituksessa miksi poistimme kulujen jäsentimemme. Miten jeneissä kulkeva matka jaetaan ilman tuota ongelmaa, kerrotaan kirjoituksessa laskunjakosovellukset Japanissa.
Mitä muuta taulukko tekee rahalle
Excel tallentaa kaikki luvut binäärisinä liukulukuina, eikä joillakin desimaaliluvuilla ole tarkkaa binäärimuotoa. Microsoftin oma huomautus liukulukulaskennasta Excelissä selittää, miksi summa voi tulla hiuksenhienosti odottamastasi luvusta poikkeavaksi. Useimmiten näyttö piilottaa sen, ja juuri siksi näkemäsi solu ja yhteen laskemasi arvo voivat erota.
Myös pyöristysfunktioilla on aivan omat sääntönsä. Excelin ROUND-funktio ja ROUND Google Sheetsissä pyöristävät jokaisen solun erikseen, tietämättä mitään jaon muista soluista. Siinä on koko ero: jaon täytyy pyöristää osuudet yhdessä, jotta ne laskevat yhä yhteen laskun summaan.
Dimesum ei koskaan tallenna rahaa minkään yksikön murto-osana. Jokainen summa on kokonainen määrä senttejä tai jenejä, valuutta kirjoitettuna sen viereen, ja jokainen jako säilyttää summansa tarkasti. Jos haluat silti pitää ryhmän rahat taulukossa, yhteisten kulujen seurantapohjamme on reilu alku, ja taulukko vai sovellus yhteisille kuluille kertoo, missä taulukko lakkaa riittämästä.
Näin saat taulukkosi samaa mieltä sovelluksen kanssa
Voit toistaa Dimesumin luvut ihan käsin. Työskentele koko ajan kokonaisina sentteinä. Anna jokaiselle ihmiselle hänen tarkan osuutensa alapuolella olevat kokonaiset sentit, laske jäljelle jääneet sentit ja jaa ne yksi kerrallaan.
- Muunna lasku senteiksi: $100.00 on 10,000.
- Anna jokaiselle hänen tarkan osuutensa alaspäin pyöristetty arvo: 3,333 kullekin, yhteensä 9,999.
- Anna ylimääräinen sentti sille ihmiselle, jonka sovellus näyttää kantavan sen, ja tarkista, että osuudet laskevat yhteen 10,000.
- Pidä yksi taulukko valuuttaa kohden, äläkä koskaan laita SUM-kaavaa kahden valuutan yli.
Kolmas vaihe on ainoa, jota et pysty ennustamaan ilman laskun tiivistettä, joten lue se suoraan laskulta. Pidempi laskutoimitus mille tahansa jaolle, painoineen ja prosentteineen, on kirjoituksessa kulujenjakolaskurin menetelmä, ja sama tarkistus ryhmän koko historiaan sovellettuna on kirjoituksessa näin pidät kirjaa kuka on velkaa kenelle matkalla.
Mitä tämä ei vieläkään pysty tekemään
Se ei pysty saamaan taulukkoasi ja sovellusta samaa mieltä jokaisesta laskusta ilman vaivaa. Taulukko, jossa on yksi pyöristyssääntö saraketta kohden, eroaa Dimesumista sentin verran suunnilleen jokaisessa laskussa, joka jättää jakojäännöksen, ja sentin kantaja vaihtuu laskusta toiseen. Se on sääntö, joka toimii juuri niin kuin pitää.
Se ei myöskään pysty tekemään yhteen lasketusta summasta tarkkaa. Yhdessä valuutassa sovitulla kurssilla näytetty saldo on suuntaa antava, ja sen pohjalta rakennettu selvityssuunnitelma voi olla yhden pienimmän yksikön pielessä muunnosta kohden. Velka, jolla on merkitystä, pysyy siinä valuutassa, jossa raha käytettiin, minkä vuoksi ryhmän velkojen selvittäminen tapahtuu valuutta kerrallaan.
Tarkista summa, älä jokaista solua
Kun sovellus ja taulukkosi ovat sentin verran eri mieltä, laske laskun osuudet yhteen: jos ne vastaavat summaa, sentti on yhdellä ihmisellä tarkoituksella. Nähdäksesi kenellä, avaa Dimesum, napauta laskua ja lue se osuus, joka on sentin muita suurempi.
Usein kysytyt kysymykset
Miksi laskunjakosovellukseni eroaa Excelistä yhden sentin?
Koska Excel pyöristää jokaisen osuuden erikseen ja sovellus pyöristää osuudet yhdessä. Kolmeen osaan jaettu $100.00 lasku on pyöristetyssä taulukossa kolme kertaa $33.33, mikä on yhteensä $99.99. Dimesum antaa yhdelle ihmiselle $33.34, jotta osuudet laskevat yhteen $100.00 summaan, ja laskun kiinteä tiiviste päättää, kuka tuon sentin kantaa.
Kuka maksaa ylimääräisen sentin, kun lasku jaetaan kolmeen osaan?
Yksi ihminen, ja Dimesumissa laskun oma tiiviste päättää, kuka. Osuudet lasketaan suurimman jakojäännöksen menetelmällä, ja kohtaa, josta ylimääräisten senttien jakaminen alkaa, kierrätetään laskun kiinteällä tiivisteellä. Sama lasku antaa aina saman vastauksen, ja monen laskun aikana sentti osuu jokaiseen ihmiseen suunnilleen yhtä usein.
Miksi Dimesum ei valitse ylimääräiselle sentille satunnaista ihmistä?
Koska aito satunnaisarvonta siirtäisi senttiä aina, kun laskua muokataan. Dimesum esittää jaon uudelleen jokaisessa muokkauksessa, joten uusi arvonta kirjaisi oikaisun rahasta, joka ei koskaan liikkunut. Laskun kiinteä tiiviste käyttäytyy monen laskun aikana kuin satunnainen valinta ja antaa yhdelle laskulle joka kerta saman vastauksen.
Voinko laskea kahden valuutan saldot yhteen yhdessä taulukon sarakkeessa?
Et voi, summa ei tarkoita mitään. €90 ja $60 yhteen laskettuna 150 on luku ilman valuuttaa, joten kukaan ei voi olla sitä velkaa. Dimesum pitää saldon valuutoittain eikä koskaan laske yhteen valuuttojen yli; ryhmä voi nähdä ne yhteen laskettuina sopimallaan kurssilla, kurssilla merkittyinä, kun taas jokainen velka pysyy siinä valuutassa, jossa raha käytettiin.
Miten Dimesum jakaa jenit, kun senttejä ei ole?
Kokonaisina jeneinä, koska jenin pienin yksikkö on ¥1. Kolmeen osaan jaettu ¥10,000 illallinen on ¥3,334, ¥3,333 ja ¥3,333, jotka laskevat yhteen ¥10,000 summaan. Kahdella desimaalilla muotoiltu taulukko näyttää ¥3,333.33, jota mikään kolikko ei voi maksaa, ja jokaisen solun pyöristäminen kokonaisiin jeneihin hukkaa ¥1 samalla tavalla kuin dollaritaulukko hukkaa sentin.
Suositut artikkelit
- Näin tasaat ryhmän kulut harvemmilla siirroilla4 min lukuaika
- Miksi jaetun kulun muokkaus vaatii jaon toistamisen6 min lukuaika
- Kuusi rahavirhettä monivaluuttaisessa kulujen jaossa7 min lukuaika
- Parhaat laskunjakosovellukset: 11 vertailtuna11 min lukuaika
- Lisäävä kirjanpito pitää jaetut saldot täsmällisinä7 min lukuaika