16. maj 2008 - 11:58Der er
27 kommentarer og 1 løsning
Lommeregner, kan ikke lave eks 5.5? (noob)
Hej jeg har et stort problem og kan ikke finde hjælp andre steder.
Mit problem er at jeg har lavet en lommeregner (en meget simpel en) Men jeg kan ikke få den til at tage . med i tallene, eks 5.6 og lign, den ignorerer .'et :(
Men mit spørgsmål er hvordan laver man den om til int men stadig bevarer .'et? Så hvis der er en super koder derude et sted som har lyst til at give et fif, så er jeg lutter ører :)
Du henter tallet med "QueryString", men sender det med en "POST"?
Hvis tallet 5.5 bliver til 55, lader det ikke til at CInt() er det eneste problem, da det afrunder tallet... (dvs. tallet skulle blive 5 eller 6, kan ikke huske om det runder op eller ned)..
Jeg for denne fejl, undskyld jeg spørger dumt, men hvad betyder CDbl? har nemmere ved at huske det hvis jeg ved hvad forkortelsen står for, ellers super mange tak for det hurtige svar :), håber at du kan hjælpe
Fejltype: Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D) Typer stemmer ikke overens: 'CDbl'
Browsertype: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Det virker hvis jeg fjerner box1C = CDbl(boc1C)? Men så er den vel ikke tvunget til at være int mere (tal hedder int ikke eller?) Men kan jeg så komme ud for fremtidige problemer med min lommeregner?
Hmm hvis jeg fjerne den der CDbl, så kan den ikke finde ud af +. 4 + 4 = 44 skriver den, men det kan den godt hvis den er sat til Cint? men hvis den er sat til Cint kan den ikke få komme med, :( så tager den kun selve tallet? Er helt på herrens mark :(
Hov skal lige huske at oplyse at hvis jeg skriver 5,5 og laver den om til Cint, så runder den automatisk op til 6, det er der mit problem er, så hvordan for jeg den til at skrive 5,5 og ikke runde op efter jeg laver Cint?
CDbl står for Convert to Double. Dvs. man får et en double-værdi i stedet for en integer-værdi.
Problemet var, at linjen med replace kom før CDbl-linjen, og CDbl kan ikke bruges på et tal, der indeholder punktum, så de 2 linjer skulle bare byttes om: box1 = Request.Form("box1") box1C = CDbl(box1C) box1C = Replace(box1C,".",",")
Men jeg tror faktisk, du skal bruge CSng (convert to single) i stedet for CDbl. Single afrunder automatisk til 2 decimaler.
Giver den også fejl, men hvordan laver jeg så en Replace på .'et men stadig beholder CDbl, og kan man få den til at lave så man kan få flere decimaler end 2? eks 10?
Solle, nej ikke helt sådan, men har lavet en lommeregner, til kvadratrod, Pythagoras, Ligninger med, box, +/-*, box ,+/-*, box, facit, så den selv regner det ud, men kunne ikke få det til at virke så jeg kunne skrive 3,45 eller lign den rundede bare op. Dog kunne jeg rigtigt godt tænke mig at lære det andet engang, samme gælder med at lave så der er en knap for hvert tal, ligesom irl.
w13, Må lige prøve det med (CSng) og formatnumber(,10). prøvede kun lige replace fordi du havde sat den under, så troede den måske var vigtig, men prøver lige det du har forslået :)
Har prøvet mig lidt frem efter dine forslag, tror CDbl() passer bedst, da jeg gerne vil have mulighed for flere decimaler end 2, det er jo lidt ærgerligt at begrænse sig selv mere end højst nødvendigt.
Men prøvede nogle forskellige kombinationer, hvilket endte op med at 1,11111111111 + 1 = 2,11111111234 et eller andet. Men kan ikke huske kombinationen nu, ved du hvorfor det kan ske? har set engang på et forum at der var en anden der var ude for noget lignende, men det er et stykke tid siden nu og kan ikke huske hvor eller hvorfor.
Hvis jeg skriver:
box1 = CDbl(box1) box1 = Replace(box1,".",",")
Så kan den ikke længere sige eks. 4 + 4 = 8, men 4 + 4 = 44? Kender du en måde hvorpå man kan Replace men stadigt tvinge box1 til at være tal, så den ikke blot ligger dem efter hinanden, men egentligt regner med dem.
Ellers må jeg jo lige tilføje at jeg indtil videre er yderst overrasket over jeres (Specielt din w13's venlighed og hurtighed, må jo være en superkoder)
1) Ja, der er en bug hvad angår særlige regnestykker med decimaler, og det er nok det, du er ude for. Kender desværre ingen løsning.
2) Du må så lade være med at erstatte med komma, før lige når du skal udskrive selve resultatet. Du kan jo heller ikke erstatte punktummet i "4,5" med et E, så det bliver "4E5" - så vil den jo heller ikke tro, det er et tal. Lige så snart, du erstatter tegnet, bliver det tekst. Så vent med det til du er færdig med at udføre udregninger med det.
Problemet er hvis jeg skriver, 5.6, så laver CDbl det om til 56, men 5,6 bliver til 5,6. Men du skriver at Cdbl ikke kan bruge noget der indeholder . men forstår ikke hvor jeg ikke kan lave .'et om til et , med replace før CDbl, for så bliver 5.6 jo til 5,6 også kommer CDbl og den laver 5,6 om til 5,6 i tal. Men der giver den jo en fejl :(
Men hvis jeg venter til sidst med at Replace, så er der ikke noget at replace da 5.6 bliver til 56 efter at have været igennem CDbl, også udskriver den stadigt kun 56 for det indeholder ikke et . den kan lave om til , Men det går nok, nu kan den hvertfald regne med decimaler, det er da en klar forbedring :)
Det med point hvordan foregår det og hvordan giver jeg?
Trykker og trykker på Accepter, men den bliver ved med at stå der, er det fordi den ikke accepterer den eller bliver den bare altid ved med at stå der?
Overhovedet ingen steder :) Det var kun en test. Hvis du _kun_ skriver dét i et asp-dokument og prøver at køre det på nettet, vil du se, hvordan "6.5" bliver tolket, når det bliver et integer, når det bliver single og når det bliver double. Både single og double indeholder stadig . selvom det nu er tal.
Som smitten1 siger, så kan man også sætte Session.LCID på sin side, f.eks.: Session.LCID=1030 hvilket betyder, at din side vil anvende dansk dato- og tidsformat, dansk valutaformat, komma i stedet for punktum, osv.
Okay mange tak :) Point er nu givet. Jeres svar var meget lærerige, så mange tak.
Synes godt om
Ny brugerNybegynder
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.