Skip to content

Commit

Permalink
Update NumberField.java
Browse files Browse the repository at this point in the history
increased accuracy
  • Loading branch information
Fexcraft committed Feb 21, 2020
1 parent 80d5407 commit 2d7bf4e
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions src/net/fexcraft/app/fmt/ui/field/NumberField.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package net.fexcraft.app.fmt.ui.field;

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

import org.liquidengine.legui.component.TextInput;
Expand All @@ -17,7 +21,11 @@
public class NumberField extends TextInput implements Field {

public static final NumberFormat nf = NumberFormat.getInstance(Locale.US);
static { nf.setMaximumFractionDigits(4); }
public static final DecimalFormat df = new DecimalFormat("#.####", new DecimalFormatSymbols(Locale.US));
static {
nf.setMaximumFractionDigits(4);
df.setRoundingMode(RoundingMode.HALF_EVEN);
}

public NumberField(int x, int y, int w, int h){
super("0", x, y, w, h); getStyle().setFontSize(20f); UserInterfaceUtils.setupHoverCheck(this);
Expand Down Expand Up @@ -84,7 +92,15 @@ public float getValue(){

@Override
public float tryAdd(float flat, boolean positive, float rate){
flat += positive ? rate : -rate; if(flat > max) flat = max; if(flat < min) flat = min; return floatfield ? flat : (int)flat;
flat += positive ? rate : -rate; if(flat > max) flat = max; if(flat < min) flat = min;
try{
Number num = nf.parse(df.format(flat));
return floatfield ? num.floatValue() : num.intValue();
}
catch(ParseException e){
e.printStackTrace();
return flat;
}
}

@Override
Expand Down

0 comments on commit 2d7bf4e

Please sign in to comment.