001 package org.bukkit.util;
002
003 /**
004 * Utils for casting number types to other number types
005 */
006 public final class NumberConversions {
007 private NumberConversions() {}
008
009 public static int floor(double num) {
010 final int floor = (int) num;
011 return floor == num ? floor : floor - (int) (Double.doubleToRawLongBits(num) >>> 63);
012 }
013
014 public static int ceil(final double num) {
015 final int floor = (int) num;
016 return floor == num ? floor : floor + (int) (~Double.doubleToRawLongBits(num) >>> 63);
017 }
018
019 public static int round(double num) {
020 return floor(num + 0.5d);
021 }
022
023 public static double square(double num) {
024 return num * num;
025 }
026
027 public static int toInt(Object object) {
028 if (object instanceof Number) {
029 return ((Number) object).intValue();
030 }
031
032 try {
033 return Integer.valueOf(object.toString());
034 } catch (NumberFormatException e) {
035 } catch (NullPointerException e) {
036 }
037 return 0;
038 }
039
040 public static float toFloat(Object object) {
041 if (object instanceof Number) {
042 return ((Number) object).floatValue();
043 }
044
045 try {
046 return Float.valueOf(object.toString());
047 } catch (NumberFormatException e) {
048 } catch (NullPointerException e) {
049 }
050 return 0;
051 }
052
053 public static double toDouble(Object object) {
054 if (object instanceof Number) {
055 return ((Number) object).doubleValue();
056 }
057
058 try {
059 return Double.valueOf(object.toString());
060 } catch (NumberFormatException e) {
061 } catch (NullPointerException e) {
062 }
063 return 0;
064 }
065
066 public static long toLong(Object object) {
067 if (object instanceof Number) {
068 return ((Number) object).longValue();
069 }
070
071 try {
072 return Long.valueOf(object.toString());
073 } catch (NumberFormatException e) {
074 } catch (NullPointerException e) {
075 }
076 return 0;
077 }
078
079 public static short toShort(Object object) {
080 if (object instanceof Number) {
081 return ((Number) object).shortValue();
082 }
083
084 try {
085 return Short.valueOf(object.toString());
086 } catch (NumberFormatException e) {
087 } catch (NullPointerException e) {
088 }
089 return 0;
090 }
091
092 public static byte toByte(Object object) {
093 if (object instanceof Number) {
094 return ((Number) object).byteValue();
095 }
096
097 try {
098 return Byte.valueOf(object.toString());
099 } catch (NumberFormatException e) {
100 } catch (NullPointerException e) {
101 }
102 return 0;
103 }
104 }