Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Mycket konstig avrundning

Postades av 2008-03-27 17:45:37 - Torsten Josefsson, i forum asp - allmänt, Tråden har 12 Kommentarer och lästs av 1351 personer

Är det någon som vet varför just 0,165 avrundas till 0,16 och inte 0,17 i asp/vbscript eller har en lösning på det? Det är ju inga problem med t.ex. 0,175.

<code>Round(0.165,2)</code>


Svara

Sv: Mycket konstig avrundning

Postades av 2008-03-27 18:54:12 - Per Persson

Hur vill du att tal på formen xxx.xx5 skall avrundas - uppåt, nedåt, slumpmässigt, beroende på om andra decimalen är udda eller jämn, eller enligt någon annan konstig regel?


Svara

Sv:Mycket konstig avrundning

Postades av 2008-03-27 23:25:30 - Torsten Josefsson

Jag vill avrunda x antal decimaler till två decimaler, t.ex. 0,165 med bara två decimaler ska ju avrundas till 0,17. Men nedanstående vbscript avrundar ju både uppåt/nerdåt och till en decimal:

<code>
a = 0.005
For i = 1 to 20
a = a + 0.01
b = b & a & " = " & Round(a,2) & vbCrLf
Next
WScript.Echo b
</code>

Ska inte Round(a,2) avrunda till just två decimaler?


Svara

Sv: Mycket konstig avrundning

Postades av 2008-03-27 23:27:25 - Per Persson

<b>Jag vill avrunda x antal decimaler till två decimaler, t.ex. 0,165 med bara två decimaler ska ju avrundas till 0,17.</b>

Det är lika korrekt att avrunda 0,165 till 0,16 som till 0,17.


Svara

Sv: Mycket konstig avrundning

Postades av 2008-03-27 23:36:46 - Martin Adrian

Det finns 5 vanliga sätt att avrunda tal som slutar på 5.

1. Närmast högre
2. Närmast lägre
3. Från 0
4. Mot 0
5. Till närmaste jämna

Round & CInt använder metod 5.
Int använder metod 2
Fix använder metod 4

Vilken är det du vill ha?


Svara

Sv:Mycket konstig avrundning

Postades av 2008-03-27 23:58:55 - Torsten Josefsson

Tack för svaren! Jag vill avrunda till närmast högre med två decimaler, 0,005 ska bli 0,01 osv. Men varför avrundas t.ex. 0,015 till 0,02 med Round medan 0,115 avrundas till 0,11? Problemet är iofs att jag i ett skript summerar och summan blir 0,165 samtidigt som jag på förhand vet att värdet ska bli 0,165. Jag avrundar båda med Round(x.xxx,2) och får 0,17 respektive 0,16. Det bör ju inte vara slumpen som styr hur asp/vbscript ska avrunda.


Svara

Sv: Mycket konstig avrundning

Postades av 2008-03-28 08:07:05 - Per Persson

Du du uppfattar som 0,115 kanske egentligen är 0,11499999, vilket ligger närmare 0,11 än 0,12.


Svara

Sv: Mycket konstig avrundning

Postades av 2008-03-28 08:14:20 - Martin Adrian

>Men varför avrundas t.ex. 0,015 till 0,02 med Round medan 0,115 avrundas till 0,11?

Det beror på att du använder datatypen double vilket inte är en exakt datatyp (till skillnad från t.ex. Currency och int).

Ett klassiskt exempel är talet 0,1. Det är förståss exakt i det vanliga talsystemet (bas 10) men är inte exakt i det talsystem double använder (bas 2). Om du tar 1/7 så får du ett tal som inte är exakt i bas 10 (det blir 0,142857...). 0,1 blir liknande i bas 2.

Kort sagt: 0,115 är antagligen inte exakt i en double utan är kanske 0,1149999... vilket avrundas korrekt till 0,11.

Om du behöver exakta värden bör du se till använda datatypen Currency istället för Double (eller alternativt Int med skalning).

Prova detta

a = CCur(0.005)
For i = 1 to 20
a = a + 0.01
b = b & a & " = " & Round(a,2) & vbCrLf
Next
WScript.Echo b

>Jag vill avrunda till närmast högre med två decimaler

x = Fix(x * 100+0.5)/100

(Tänk dock på att -0,015 avrundas till -0,01 vilket är närmast högre)


Svara

Sv:Mycket konstig avrundning

Postades av 2008-03-28 11:07:51 - Torsten Josefsson

Tack för alla tips och svar!

Med CCur blir det fortfarande "fel". Om jag däremot använder FormatNumber blir det som jag vill:

<code>
a = 0.005
For i = 1 to 20
a = a + 0.01
b = b & a & " = " & FormatNumber(a,2,-1,0,-1) & vbCrLf
Next
WScript.Echo b
</code>


Svara

Sv: Mycket konstig avrundning

Postades av 2008-03-28 12:55:00 - Martin Adrian

>Med CCur blir det fortfarande "fel".

Avrundningen blir rätt för mig. Vilket värde blir fel?

>Om jag däremot använder FormatNumber blir det som jag vill:

Jo men det förändrar ju inte värdet utan bara utskriften.


Svara

Sv:Mycket konstig avrundning

Postades av 2008-03-28 13:50:37 - Torsten Josefsson

Med CCur blir det "avrunda-mot-jämnt-regeln":

0,025 blir 0,02 men bör bli 0,03
0,045 blir 0,04 men bör bli 0,05
0,065 blir 0,06 men bör bli 0,07
0,085 blir 0,08 men bör bli 0,09


Svara

Sv: Mycket konstig avrundning

Postades av 2008-03-28 21:56:18 - Anna-Karin Söderberg

Jag fick den här koden förut, den kanske går att göra kortare.
<info>
<%
vValue = 234.75

vOre = Mid(Cstr(vValue),InStr(Cstr(vValue),","),3)
vTal = Left(Cstr(vValue),(InStr(Cstr(vValue),",")-1))

If vOre =< 0.24 Then
vAdd = 0
cValue = FormatCurrency(vValue)
cUtj = FormatCurrency(vTal - vValue)
cTal = FormatCurrency(vTal)
ElseIf vOre > 0.24 And vOre < 0.75 Then
vAdd = 0.5
vTal = vTal + vAdd
cValue = FormatCurrency(vValue)
cUtj = FormatCurrency(vTal - vValue)
cTal = FormatCurrency(vTal)
ElseIf vOre => 0.75 Then
vAdd = 1
vTal = vTal + vAdd
cValue = FormatCurrency(vValue)
cUtj = FormatCurrency(vTal - vValue)
cTal = FormatCurrency(vTal)
End If

Response.Write("

Initialt tal : " & vValue & "
")
Response.Write("Utjämning : " & cUtj & "
")
Response.Write("Resultat : " & vTal & "

")
%>
</info>


Svara

Sv:Mycket konstig avrundning

Postades av 2008-03-29 17:42:15 - Martin Adrian

Det är nog den konstigaste kod jag sett. Platsar säkert på http://thedailywtf.com/

Om jag förstår rätt så är meningen att den skall avrunda till närmaste 50 öring. (0.25 och 0,75 avrundas uppåt).

>den kanske går att göra kortare.

avrundat = Int(vValue*2+0.5)/2

Response.Write("Initialt tal : " & FormatCurrency(vValue))
Response.Write("Utjämning : " & FormatCurrency(avrundat - vValue))
Response.Write("Resultat : " & FormatCurrency(avrundat))


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
751
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies