rolloMedlem sedan aug. 2001203 inlägg Tjena!
Jag försöker avrunda värden som är double variabler.
Värdet i variabeln är från 100.00 till 584999.9648999999, detta värde vill jag avrunda till 2 decimaler.
Innan jag kör variabel kapningen så gör jag följande
String inputHeader = header.getNetValue();
String outputHeader = inputHeader.replaceAll(",", "");
double inc_taxHeader = 1.17;
inc_taxHeader = inc_taxHeader * summaHeader;
För att kapa variablerna så kör jag koden nedan
//convert double (inc_taxHeader) to string
String sumString = Double.toString(inc_taxHeader);
String priceHeader = sumString;
// atleast 2 decials and maximum four.
java.text.DecimalFormat df = new DecimalFormat("#.00");
double newPriceHeader = Double.parseDouble(priceHeader);
out.println(priceHeader);
//doc.replaceItemValue("priceHeader", df.format(newPriceHeader));
Vad jag hittat på nätet så skall jag först konvertera min variabel till string och sedan använda DecimalFormat för att ange hur många decimaler jag vill ha.
Men hur jag än vrider o vänder på det så vill den inte fixa mina decimaler.
Vad f-n gör jag fel?
rollo
LimeMedlem sedan sep. 2001961 inlägg Nä, de som gjorde java är bra mycket smartare än så...
Enligt manualen så tar DecimalFormat.format antingen en double eller en long. Det finns ingen orsak alls att först göra 199.1211 till "199.1211" som du gör när du tilldelar sumString och priceHeader (som är samma instans f.ö) för att sedan konvertera den strängen till en double med värdet 199.1211 som du gör i newPriceHeader eftersom newPriceHeader == inc_taxHeader.
# = Kan finnas.
0 = Måste finnas.
Jag kör följande, och det blir helt korrekt:
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#.00##");
double d1 = 199.123456789;
double d2 = 199.15999;
double d3 = 199.9999999;
double d4 = 199;
System.out.println("D1:" + df.format(d1));
System.out.println("D2:" + df.format(d2));
System.out.println("D3:" + df.format(d3));
System.out.println("D4:" + df.format(d4));
}
det ger utskriften
D1:199,1235
D2:199,16
D3:200,00
D4:199,00
Krångla inte till det så mycket...
PS: Notera att den faktiskt avrundar på korrekt sätt...
PS2: Lek lite med siffrorna i mitt exempel så kommer du att se att det är korrekt.
rolloMedlem sedan aug. 2001203 inlägg sent om sidor så tar jag tag i detta igen
kör jag med koden
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#.00##");
}
dock crashar sidan när jag har koden aktiverad
Jag importerar även
<%@ page import="java.text.*" %>
hela koden ser ut så här
if(salesOrgHeader.equals(salesOrgChinaHeader)) {
String inputHeader = orderheader.getNetValue();
String outputHeader = inputHeader.replaceAll(",", "");
double summaHeader = 0;
try {
summaHeader = Double.parseDouble(outputHeader);
} catch(NumberFormatException e) {
/* Inte bara siffror i strängen */
}
double inc_taxHeader = 1.17;
inc_taxHeader = inc_taxHeader * summaHeader;
// atleast 2 decials.
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#.00##");
}
%>
Jag är helt lost o fattar inte vad jag gör för fel!
:r
rollo
rolloMedlem sedan aug. 2001203 inlägg Cheers Lime!
Din kod funkade prima!
Gjorde följande modifiering för att det skulle lira som jag ville ha det!
// visa inga decimaler
DecimalFormat df = new DecimalFormat("#");
//skapa sträng av värde
String tmp_texHeader = df.format(inc_taxHeader);
// lägg till .00 i strängen
tmp_texHeader = tmp_texHeader + ".00";
rollo