jag har ett formulär där jag matar in ett pris. priset matas in och sparas i en double. om jag matar in 349 så blir det då 349,00 (med %.2f). när jag sedan vill skicka in det till databasen så önskar databasen 349.00 gissar jag (kolumnen i databasen är av typen DECIMAL(5,2)). hur löser jag detta enklast? replace är väl onödigt eller är det vägen jag bör ta?
Java/MySQL double -> DECIMAL
7 svar · 814 visningar · startad av Broms
349 så blir det då 349,00
Hur får du till det? Javas Double.toString(tal) använder alltid . som decimaltecken, och jag tycker att du får vänja dig vid att göra det också när du skriver in tal, om det var så du menade?
så önskar databasen 349.00 gissar jag
Gissa inte sådana saker! Testa alltid och se vad som händer, så lär du dig saker vartefter!
okej gissa = vet ;) fel uttryckt av mig :)
det är så att jag sparar priset som en DECIMAL i databasen.. och jag använder string.format för att skapa sql-satsen som ser ut som följer:
String query = String.format("UPDATE Artikel SET Artnamn = '%s', ProdtypID = '%d', Besk = '%s', Antal = '%d', Pris = '%.2f', GenreID = '%d', Utgivdatum = '%s' WHERE ArtID = '%s';", Artnamn, ProdtypID, Besk, Antal, Pris, GenreID, Utgivdatum, ArtID);
Om jag gör om den till String och får 349.00 så måste jag väl ändå på något sätt trixa om den innan jag går vidare med den till databasen, för en DECIMAL kan väl inte mottaga ett String-värde?
String query = String.format("UPDATE Artikel SET Artnamn = '%s', ProdtypID = '%d', Besk = '%s', Antal = '%d', Pris = '%s', GenreID = '%d', Utgivdatum = '%s' WHERE ArtID = '%s';", Artnamn, ProdtypID, Besk, Antal, Double.toString(Pris), GenreID, Utgivdatum, ArtID);
för en DECIMAL kan väl inte mottaga ett String-värde?
Jo, databas-frågan skickas ju som en sträng, så det går bra att skicka en sträng, om man bara ser till att den är formaterad som ett tal.
tackar så hjärtligt :D
dock kommer väl stringen att ha massa 0or efter decimaltecknet eftersom ingen formattering har gjorts som jag hade det tidigare?
hur löser jag det? tänkte göra det precis innan sql-satsen konstrueras, t.ex:
Pris = någonmetodförattfixatill2decimaler(Pris);
Nej, inga nollor.
okej super duper..tackar igen!! du är bäst :)
Nu är ju problemet redan löst, men jag kan ocksåa tillägga att med största sannolikhet måste du inte skicka talet med två decimaler tll databasen; 5,2 anger bara vilken precision talet lagras med.