diff options
Diffstat (limited to 'src/main/java/util/Util.java')
-rw-r--r-- | src/main/java/util/Util.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/main/java/util/Util.java b/src/main/java/util/Util.java index 6a56dfa8aa..17bcf2b841 100644 --- a/src/main/java/util/Util.java +++ b/src/main/java/util/Util.java @@ -1,8 +1,14 @@ package util; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Locale; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; @@ -12,6 +18,17 @@ import common.items.ErrorItem; public class Util { + protected static final DecimalFormat percentFormatRound_6 = new DecimalFormat("0.000000%"); + protected static final DecimalFormat percentFormatRound_2 = new DecimalFormat("0.00%"); + protected static final BigDecimal Threshold_1 = BigDecimal.valueOf(0.01); + protected static DecimalFormat standardFormat; + + static { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US); + dfs.setExponentSeparator("x10^"); + standardFormat = new DecimalFormat("0.00E0", dfs); + } + public static ItemStack getStackofAmountFromOreDict(String oredictName, final int amount) { final ArrayList<ItemStack> list = OreDictionary.getOres(oredictName); if (!list.isEmpty()) { @@ -48,4 +65,25 @@ public class Util { } return ret; } + + /* If the number is less than 1, we round by the 6, otherwise to 2 */ + public static String toPercentageFrom(BigInteger value, BigInteger maxValue) { + BigDecimal result = new BigDecimal(value).setScale(6, RoundingMode.HALF_UP) + .divide(new BigDecimal(maxValue), RoundingMode.HALF_UP); + if (result.compareTo(Threshold_1) < 0) { + return percentFormatRound_6.format(result); + } else { + return percentFormatRound_2.format(result); + } + } + + /* Get a string like this: 4.56*10^25 */ + public static String toStandardForm(BigInteger number) { + if (BigInteger.ZERO.equals(number)) { + return "0"; + } + + return standardFormat.format(number); + } + } |