Vad är det för språk du har variabeln i?
Dollartecken före har man ju i php men inte i Javaskript, som är det forum du postat i. Sen pratar du ju också om Java som är ytterligare ett språk...
24 svar · 2 784 visningar · startad av Danny
Hej, jag hoppas få lite hjälp med en sak jag grubblade på ett tag. Det är så att jag har en variabel som är en sträng och jag vill plocka ut talet från den och multiplicera det med en konstant och sedan kunna skriva ut det också.
Såhär ser min kodrad ut nu:
<b>Brännvidd:</b> $focalLength <b style="color: Silver;"></b>
Det är variabeln "focalLength" som jag vill ta och multiplicera med 4.864 för att sedan ta och skriva det istället, gärna med max två decimaler också. Hur bär man sig åt? Jag kan inte Java och har försökt lite med olika kommandon, men det är inget som vill som jag vill.
/red: just det... variabeln brukar se ut såhär ungefär "7.8125mm", kolla här för exempel: Exempel det är brännvidden där nere. Det ska stå "38 mm" istället!
Vad är det för språk du har variabeln i?
Dollartecken före har man ju i php men inte i Javaskript, som är det forum du postat i. Sen pratar du ju också om Java som är ytterligare ett språk...
Hur gör du för att skriva ut variabeln i html-dokumentet?
Det gör programmet automatiskt via två stycken htt-filer där koden står: Här är urdrag från den htt-fil som jag ändrar i:
<ja:if exists="meta">
<small>
<b>Datum:</b> $originalDate <b style="color: Silver;"> | </b>
<b>Upplösning:</b> $resolution <b style="color: Silver;"> | </b>
<b>Exponering:</b> $exposureTime <b style="color: Silver;"> | </b>
<b>Bländare:</b> $aperture <b style="color: Silver;"> | </b>
<b>Brännvidd:</b> $focalLength <b style="color: Silver;"></b>
</small>
<br><br>
</ja:if>
Observera att jag ändrade mitt förra inlägg också... :)
Här är hela filen om det skulle hjälpa
Aha, det är inte du som gjort programmet... Då är det ju en annan femma. Det som du klistrat in här är ingen programkod utan bara data till programmet JAlbum som är det som är skrivet i Java.
Danny skrev:
Här är hela filen om det skulle hjälpa
Prova att byta ut $focalLength mot:
<%=focalLength * 4.864 %>
Det där fungerar inte eftersom focalLength är en sträng där det står mm i slutet. Som i exemplet "7.8125mm". Det står:
Evaluation error on line 1:
Details:
Sourced file: inline evaluation of: ``focalLength * 4.864 ;'' : Operator: '"*"' inappropriate for objects
Annars fungerar ju metoden i sig. Skriver jag t ex
<%=10 * 4.864 %>
så skriver den ut 48.64 i koden
I Delphi hade jag gjort så att den kopierar strängen från första tecknet till sista siffran, där förekomsten av "mm" finns. Sedan konvertera det till flyttal, avrunda med två decimaler och konvertera tillbaka till sträng. Har provat liknande i Java här, men det bara jävlas.
Hur kommer det sig att det står "mm" i focalLength? Det borde det ju egentligen inte göra, utan det borde skrivas ut i html-koden. Typ <b> $focalLength mm </b>.
Kan parseFloat funka kanske?
<%= parseFloat(focalLength) * 4.864 %>
Det står:
Evaluation error on line 1:
Details:
Sourced file: inline evaluation of: `` parseFloat(focalLength) * 4.864 ;'' : Command not found: parseFloat( java.lang.String )
aha... något som funkar:
Float.parseFloat(focalLength.substring(0,4));
/red:
iaf när focalLength är mer än 4 tecken :) ...märkte jag nu... men då har jag ju lösninge på g kanske. Jag har upptäckt att man kan köra via Java-konsol så kan man prova mkt enklare.
Haha!! Got it!!!
focalLength="7.8125mm";
focalLength35=Float.parseFloat(focalLength.substring(0,focalLength.indexOf("mm")));
focalLength35=focalLength35*4.864;
/red: skrev det där i konsollen så det ser ju lite annorlunda ut, ska fixa så den inte kör via en ny variabel bara...
Tänk på att om focalLength skulle sakna "mm" i slutet så kommer du få ett StringIndexOutOfBoundsException då indexOf-metoden returnerar -1, så det kan du kanske behöva kolla först.
För att avrunda till två decimaler så kan du använda NumberFormat:
<%
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
%>
<%= nf.format(focalLength35) %> mm
Såhär blev det:
<ja:if test="<%=focalLength.length() > 0%>">
<b>Brännvidd:</b> $focalLength <b style="color: Silver;"></b>
<b>Brännvidd35:</b>
<%= Float.parseFloat(focalLength.substring(0,focalLength.indexOf("mm"))) * 4.864 %>
<b style="color: Silver;"></b>
</ja:if>
Men det blir för många decimaler ibland, har inte lyckats få till avrundningen än...
sgtpepper skrev:
Tänk på att om focalLength skulle sakna "mm" i slutet så kommer du få ett StringIndexOutOfBoundsException då indexOf-metoden returnerar -1, så det kan du kanske behöva kolla först.
För att avrunda till två decimaler så kan du använda NumberFormat:
<% NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); %> <%= nf.format(focalLength35) %> mm
aha!! ...ja, jag märkte det, därför satte jag IF-satsen där, men det där sättet med "fractiondigits" verkar vara nåt...
Helt lysande sgtPepper!!!!
<ja:if test="<%=focalLength.length() > 0%>">
<b>Brännvidd:</b>
<%
focalLengthA95 = Float.parseFloat(focalLength.substring(0,focalLength.indexOf("mm")));
focalLength35 = focalLengthA95 * 4.864;
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
%>
<%= nf.format(focalLengthA95) %> mm
<b style="color: Silver;"></b>
<b>Brännvidd35:</b>
<%= nf.format(focalLength35) %> mm
<b style="color: Silver;"></b>
</ja:if>
Oj! Nu accepterade jag ju kanske fel svar. Det var ju tydal som kom med sparken i rätt riktning så jag lyckades ordna det som var viktigast. Men tack till er båda!!! Det var fint, då kan jag pula vidare...