webForumDet fria alternativet

Java/MySQL double -> DECIMAL

Java

7 svar · 817 visningar · startad av Broms

Medlem sedan sep. 2002188 inlägg
Frågan#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?

Medlem sedan aug. 20039 340 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!

Medlem 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?

Medlem sedan aug. 20039 340 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.

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

Medlem sedan aug. 20039 340 inlägg
#6

Nej, inga nollor.

Medlem sedan sep. 2002188 inlägg
#7

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

Medlem sedan aug. 20039 340 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.

287 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
146 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
144 ms — ändringar (db)