Avatar billede skwat Praktikant
21. november 2002 - 16:11 Der er 6 kommentarer og
3 løsninger

12345678901234567 + 1

Hej Eksperter

Dette problem er nok det mest bannale jeg har haft i min vb-aera i mit liv:
Hvis jeg har et tal 12345678901234567 og lægger 1 til får jeg 1,23456789012346E+16!
Hvordan sørger jeg for at få tallet 12345678901234568?

Variablen som jeg skal ende med skal være en string.
21. november 2002 - 16:24 #1
Så vidt jeg husker, så regnes der med 15 betydende cifre, og 15 betydende decimaler, og her bruger du 17 - mener det er årsagen til E+ sjoveren laves.
Avatar billede skwat Praktikant
21. november 2002 - 16:25 #2
men hvordan løses det?
21. november 2002 - 16:29 #3
Hvis maks er 15 betydende cifre - så kan det vel ikke løses med flere cifre !
Avatar billede skwat Praktikant
21. november 2002 - 16:52 #4
så må jeg jo klippe klister, men det er sku' da noget slam

flemmingdahl: jeg lader den lige srå åben i en dags tid
21. november 2002 - 16:57 #5
bare iorden - kan jo være vi begge kan blive klogere.
Avatar billede ocp Nybegynder
21. november 2002 - 19:56 #6
Værsågod:

Public Function AddToLargeNumber(sNumber As String, lAdd As Long) As String
    Dim lNumber As Long
    Dim lRightPart As Long
    Dim sLeftPart As String
   
    lRightPart = Len(CStr(lAdd)) + 1
    lNumber = CLng(Right(sNumber, lRightPart))
   
    sLeftPart = Left$(sNumber, Len(sNumber) - lRightPart)
   
    AddToLargeNumber = sLeftPart & CStr(lNumber + lAdd)
   
End Function
Avatar billede ocp Nybegynder
21. november 2002 - 20:00 #7
Fidusen er at jeg tager et MEGET stort tal som en streng og adderer en long til en mindre del af tallet (den højre side). Derved kan jeg sagtens operere på astronomiske tal så længe jeg ikke adderer noget større end en long.
PS: Bemærk at jeg snupper et ekstra tegn - for at tage højde for f.eks. 5+5 der jo giver 10.
Avatar billede kabbak Professor
21. november 2002 - 20:54 #8
Variabler af typen Decimal lagres som 96-bit (12-byte) heltal uden fortegn, der skaleres med en variabel potens på 10. Potensen på 10 skaleringsfaktor angiver antallet af cifre til højre for decimaltegnet og områder mellem 0 og 28. Med en skala på 0 (ingen decimaler) er den størst mulige værdi +/-79.228.162.514.264.337.593.543.950.335. Med 28 decimaler er den største værdi +/-7,9228162514264337593543950335 og den mindste ikke-nul værdi er +/-0,0000000000000000000000000001.

Bemærk!  På dette tidspunkt kan datatypen Decimal kun anvendes i en variant, dvs. du kan ikke erklære, at en variabel er af typen Decimal. Du kan dog oprette en variant, hvis undertype er Decimal ved hjælp af funktionen CDec.
Avatar billede lovix Nybegynder
29. november 2002 - 08:27 #9
Jeg kan ikke svare, men jeg kan da forklare dit problem lidt:
Det E der kommer betyder Eksponent!
Efter E'et kommer der et plus-tegn og efter det igen kommer der så et tal (I dette tilfælde 16). Det vil betyde at du (I dette tilfælde) skal flytte det komma (der er kommet oppe foran) 16 plasser til højre!!

\LoViX
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester