webForumDet fria alternativet

Java/MySQL double -> DECIMAL

7 svar · 814 visningar · startad av Broms

BromsMedlem sedan sep. 2002188 inlägg
#1

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?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

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!

BromsMedlem sedan sep. 2002188 inlägg
#3

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?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4
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.

BromsMedlem sedan sep. 2002188 inlägg
#5

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);

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6

Nej, inga nollor.

BromsMedlem sedan sep. 2002188 inlägg
#7

okej super duper..tackar igen!! du är bäst :)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#8

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.

249 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
124 ms — hämta forumlista (db)
123 ms — hämta statistik (db)
124 ms — hämta tråd, inlägg och bilagor (db)