---
title: "Avrunda procent"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/74562-avrunda-procent"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "MickeA.com"
published: "2003-04-20T16:03:22.000Z"
updated: "2003-04-22T14:17:40.000Z"
replies: 17
views: 909
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/74562-avrunda-procent"
---

# Avrunda procent

## #1 — MickeA.com, 2003-04-20T16:03Z

Hej

Håller på o gör en undersökning, Asp / Access / Flash.

Räknar ut procenten av resultaten såhär:

\_______________________\_

total = res1 + res2 + res3

pro1 = res1 / total \* 100
pro2 = res2 / total \* 100
pro3 = res3 / total \* 100
\_______________________\_

Nu vill jag avrunda dessa pro1, pro2 och pro3 så att det blir till HELTAL.

Hur gör jag?!

Permalänk: https://www.webforum.nu/p/74562

## #2 — Peeer, 2003-04-20T16:06Z

Använd funktionen [round()](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctround.asp).

Permalänk: https://www.webforum.nu/p/1017868

## #3 — Fredde Mannen, 2003-04-20T16:07Z

Använd dig av : Round(), ex: Round(res1 / total \* 100)

Permalänk: https://www.webforum.nu/p/1017869

## #4 — Fredde Mannen, 2003-04-20T16:08Z

Attans Peeer, du var snabbare!!! :e

Permalänk: https://www.webforum.nu/p/1017870

## #5 — MickeA.com, 2003-04-20T16:11Z

Tack & Bock

Permalänk: https://www.webforum.nu/p/1017873

## #6 — Peeer, 2003-04-20T16:13Z

> **Fredde Mannen skrev:**
>
> Attans Peeer, du var snabbare!!! :e

Amuahaha ;)

Permalänk: https://www.webforum.nu/p/1017875

## #7 — MickeA.com, 2003-04-20T17:25Z

JAg kan ju säga att det här med round() suger rätt hårt.

När jag nu kör min poll och den räknar upp resultaten i procent, blir det totalt 99%, vilket suger, det totala skall ju alltid vara 100%?!

Permalänk: https://www.webforum.nu/p/1017917

## #8 — LarsG, 2003-04-20T17:30Z

Varför skulle det alltid bli 100%. Förklara det för mig.

Permalänk: https://www.webforum.nu/p/1017919

## #9 — @nders, 2003-04-20T17:30Z

Då får du se till att kompensera. 

Avrundar du så tappar du alltid precision.

Permalänk: https://www.webforum.nu/p/1017920

## #10 — MickeA.com, 2003-04-20T17:33Z

Men säg att du har 100 röster, tre alternativ

DEN SAMMANLAGDA TOTALA FÖRDELNINGEN MELLAN DESSA RÖSTER BLIR JU ALLTID LIKA MKT SOM DET TOTALA ANTALET RÖSTER, eller hur?! (sorry, capslock...)

Permalänk: https://www.webforum.nu/p/1017923

## #11 — LarsG, 2003-04-20T17:52Z

Säg att du har 99 röster 3 alternativ och varje alternativ får 33 röster. 

Dvs vardera 33.333..... % (oändligt antal treor)

Avrundat till ett heltal blir det 33. Du har tappat 0.333..... 

Heltalet 33 innehåller inte lika mycket information det reella talet 33.333....

Det hele beror på vilken representation du använder.  Det går inte att representa värden exakt med hjälp av flyttal så oavsett huir du gör så kan det bli fel om du räknar om till %

@nders:

Hur då kompensera? Det fungerar i vissa fall men inte alltid så jag ser inte hur det hjälper generellt sett.

Permalänk: https://www.webforum.nu/p/1017943

## #12 — Peeer, 2003-04-20T17:54Z

Om du har 99 röster och 3 alternativ. Alla alternativen har lika många röster (dvs 33), och du vill visa andelen röster på varje alternativ (i hela procentenheter). Då kommer varje alternativ naturligtvis få (33/99)\*100% (\~33,333%) av alla röster. Men eftersom du avrundar till 33% så förlorar du 0,333 procentenheter för varje alternativ, totalt 0,999procentenheter alltså. Om du sen räknar ihop de olika procentenheterna så finner du att det saknas 1 för att det ska bli hundra. Det är ju logiskt!

> **@nders skrev:**
>
> Avrundar du så tappar du alltid precision.

/r LarsG är snabbare än mig :)

Permalänk: https://www.webforum.nu/p/1017945

## #13 — @nders, 2003-04-20T18:08Z

> **LarsG skrev:**
>
> Hur då kompensera? Det fungerar i vissa fall men inte alltid så jag ser inte hur det hjälper generellt sett.

Nej, generellt sett hjälper inte det. Men om man avrundar ett antal tal och kräver att summan skall bli ett exakt tal kan man bli tvungen att kompensera.

Det bästa är väl att skriva att talen är avrundade och ungefärliga. 

Mvh

Permalänk: https://www.webforum.nu/p/1017957

## #14 — Engine^, 2003-04-22T06:49Z

Eller så kollar du om summan av delresultaten är 100. Är den 99 eller 101, så lägger du helt enkelt till eller drar ifrån ett från något av resultaten och kallar det för den statistiska normalavvikelsen, så är du home free.

Permalänk: https://www.webforum.nu/p/1019011

## #15 — GunnarD, 2003-04-22T06:54Z

En bra lösning som brukar fungera är att avrunda så sent som möjligt., då tappar man inte så mycket i precision.

I ditt fall så borde det bli något såhär:

total = res1 + res2 + res3

pro1 = round(res1 / total \* 100)
pro2 = round(res2 / total \* 100)
pro3 = round(res3 / total \* 100)

pro_tot=round(res1 / total \* 100 + res2 / total \* 100 + res3 / total \* 100)

Permalänk: https://www.webforum.nu/p/1019012

## #16 — Jesper T, 2003-04-22T07:35Z

Det finns ju en vbScript funktion som heter "FormatPercent".

```
total = res1 + res2 + res3

pro1 = round(FormatPercent(res1))
pro2 = round(FormatPercent(res2))
pro3 = round(FormatPercent(res3))

pro_tot=round(FormatPercent(res1) + FormatPercent(res2) + FormatPercent(res3))
```

Permalänk: https://www.webforum.nu/p/1019023

## #17 — Engine^, 2003-04-22T07:54Z

Sant. FormatPercent tar som andraargument antal decimaler, så det hela kan väl skrivas som:

```
pro1 = FormatPercent(res1, 0)
pro2 = FormatPercent(res2, 0)
pro3 = FormatPercent(res3, 0)

pro_tot = FormatPercent(res1 + res2 + res3, 0)
```

Permalänk: https://www.webforum.nu/p/1019029

## #18 — MickeA.com, 2003-04-22T14:17Z

Ok tack killar, ska se, har nu märkt att jag även avrundar ytterliggare en gång när jag skickat variablerna in i flash, och det verkar onödigt, antagligen det som ställer till de ;)

Permalänk: https://www.webforum.nu/p/1019235

---

Tråden på webben: https://www.webforum.nu/amne/asp/74562-avrunda-procent
