Hm... Har en liten fråga..... decimaler går normalt inte att representera exakt med binära datatyper, t.ex. double. Nja..... Jag vill ju bara att tex 10,0229999999999999999999999 skall bli 10,022 INTE 10,023.... Alltså INGEN avrundning uppåt..... [citerat Niklas Rosenberg Medlem:15709 [FIX()]#267783] Hej! Det som förvånar mig är att man får svar på frågor som man inte läst igenom.. [citerat Niklas Rosenberg Medlem:15709 [FIX()]#267812] Finns det inte något FormatNumber(tal,2) som kan lösa problemet, du skriver att du inte vill avrunda så du borde kunna kapa de siffror du inte vill ha kvar.FIX()
Hur kan:
Fix(10,023 * 1000)
bli 10022? Borde det inte bli 10023?
Eller vad skall jag ha för att det skall bli 10023?
Jag skall ha det till att ta bort för många decimaler utan att avrunda...
Med Fix(10,0239 * 1000)/1000 skall alltså bli 10,023 och INTE 10,024
HJÄLP vad skall jag ha istället?Sv: FIX()
10,023 blir 10,022999...
Om du vill ha exakta decimaler bör du använda exakta datatyper som int, decimal, currency.
Om jag förstår dig rätt så vill du att 10,02299999 skall bli 10,023. Det du får göra då är att bestämma vilket interval som skall avrundas uppåt och lägga till det innan du trunkerar.
Fix(10,0239*1000+0,01)/1000Sv:FIX()
Men skall brova med int..... Eller Decimal och se om det blir någon ändring....
Tack för förslaget..Sv: FIX()
<citat>
Nja..... Jag vill ju bara att tex 10,0229999999999999999999999 skall bli 10,022 INTE 10,023.... Alltså INGEN avrundning uppåt.....
</citat>
Om 10,0229999999999999999999999 ska bli 10,023 så avrundar du uppåt. Det är inget mer att snacka om. Det handlar om hur nära 10,023 du måste hamna för att du ska avrunda uppåt. Du kanske får ta 1e-12 som limit om det är så.Sv:FIX()
Du kanske kan skapa en if-sats?
Typ såhär:
om talet < talet avrundat
då ska resultatet vara det avrundade talet - 0,001
/Vän av knäppa lösningar :)Sv:FIX()
Jag skrev att 10.022999999999999 skulle bli 10.022 INTE 10,023............
Jag vill alltså inte av runda alls uppåt....Sv: FIX()
<citat>
Det som förvånar mig är att man får svar på frågor som man inte läst igenom..
</citat>
För det första syftade jag till Annelies svar; flyttalsoperationer ska inte lösas med if-satser.
[citerat Niklas Rosenberg Medlem:15709 [FIX()]#267812]
<citat>
Jag skrev att 10.022999999999999 skulle bli 10.022 INTE 10,023............
Jag vill alltså inte av runda alls uppåt....
</citat>
Mmm... men det du har i ursprungsfrågan <b>är inte 10.023</b>, det är bara vad du tror att du har, det är vad du skriver in. Vad du i själva verket har är 10.029999999[nånting, beroende på datatyp], eftersom du har ett flyttal. Du kan _aldrig_ skriva in talet 10.023 i flyttal. Däremot med exakta datatyper som Int eller Decimal.Sv: FIX()